概述 现在Elasticsearch是比较火的, 很多公司都在用. 而Docker也正如火如荼, 所以我就使用了Docker来安装ELK, 这里会详细介绍下安装的细节以及需要注意的地方. 先来强调一下, Elasticsearch和Kibana必须用相同版本, 这个可以避免很多坑。 日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。 开源实时日志分析ELK平台由ElasticSearch、Logstash和Kiabana三个开源工具组成: 1)ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。在elasticsearch中,所有节点的数据是均等的。 2)Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。 3)Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 ELK工作原理展示图: 如上图:Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。 ELK环境部署 CentOS7.8系统上安装docker,并用docker安装ELK单机日志手机系统平台。 一、准备工作 1,系统环境 系统:CentOS7.8 防火墙:关闭 Centos7防火墙关闭方法与Centos6的有所区别 CentOS6关闭防火墙使用以下命令: CentOS7中关闭防火墙使用以下命令: selinux:关闭 selinux关闭方式有两种,一种是临时关闭,另一种是永久关闭。 临时关闭方式: 永久关闭方式: 编辑配置文件/etc/selinux/config 首先执行yum update –y升级操作系统到最新版本, [root@docker-srv ~]#cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core) 配置安装docker-ce19.03.11的yum源, yum install –y yum-utils device-mapper-persistent-data lvm2 yum-config-manager \ --add-repo \ https://download./linux/centos/docker-ce.repo 执行yum install docker-ce-19.03.11* -y 验证安装 安装完成后,运行下面的命令,验证是否安装成功。 docker version docker info
配置docker加速器 vi /etc/docker/daemon.json systemctl daemon-reload systemctl restart docker systemctl enable docker docker安装到此结束! 1,接下来用docker安装ELK,拉取镜像: 首先安装elasticsearch docker pull elasticsearch:7.6.2 敲完命令后回车, 只需要等镜像下载完就成了. 一共791MB, 耐心等待. 2,启动ES 安装完成以后当然需要去启动了, 启动也很方便, 只需要一行命令即可. docker run --name es1 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -d elasticsearch:7.6.2 启动后可以先查看一下,名称自定义! 3. 测试安装 我们可以去检查ES是否安装完成, 可以输入命令: 注意: 需要关闭防火墙或放行9200端口 安装Kibana Kibana是一个开源的分析和可视化平台, 被设计用于和Elasticsearch一起工作. 我们可以通过Kibana来搜索, 查看, 并和存储在Elasticsearch索引中的数据进行交互, 并轻松地执行高级数据分析, 以各种图标, 表格和地图的形式可视化数据. Kibana使得理解大量数据变得很容易. 它简单的, 基于浏览器的界面使你能够快速创建和共享动态仪表板, 实时显示Elasticsearch查询的变化. 1. 拉取镜像 同样适用docker安装Kibana命令如下: docker pull kibana:7.6.2 这个比较大, 有1.01GB, 耐心等待… 2. 启动Kibana 安装完成以后需要启动Kibana容器, 我们需要使用--link参数将Kibana连接到Elasticsearch容器, 命令如下: docker run --name kibana --link es1:elasticsearch -p 5601:5601 -d kibana:7.6.2 其中, --link es:elasticsearch中的es是Docker中Elasticsearch容器名, 你也可以替换成对应的容器ID. 3. 配置汉化 默认情况下, Kibana界面是英文的, 不过Kibana 7中官方加入了中文的选项, 汉化包位置: /usr/share/kibana/x-pack/plugins/translations/translations/zh-CN.json 我们需要进入Kibana容器, 编辑/usr/share/kibana/config/kibana.yml文件, 在末尾添加i18n.locale: zh-CN即可. 注意冒号后一定要有空格! docker exec -it kibana /bin/bash cd config/ vi kibana.yml exit 然后重启Kibana docker restart kibana 4. 测试安装 启动以后可以打开浏览器输入http://你的IP:5601就可以打开Kibana的界面了. 上图 ES的其他设置 在使用Elasticsearch时, 我们还需要进行一些设置. 例如解决跨域访问和中文分词. 1. 解决跨域访问 首先进入到ES容器中, 然后进入到指定目录修改elasticsearch.yml文件 docker exec -it es /bin/bash cd config/ vi elasticsearch.yml 在elasticsearch.yml的文件末尾加上 http.cors.enabled: true http.cors.allow-origin: "*" 修改配置后重启容器即可 docker restart es1
2. 安装IK中文分词器 ES自带的分词器对中文分词不友好, 所以我们下载开源的IK分词器来解决这个问题. 首先进入到plugins目录中下载分词器, 下载完成后解压, 再重启ES即可. 具体步骤如下: docker exec -it es /bin/bash cd plugins/ elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.6.2/elasticsearch-analysis-ik-7.6.2.zip exit Elasticsearch的版本和IK分词器的版本需要保持一致, 不然在重启的时候会失败. 可以点击查看所有版本, 选择合适的版本右键复制链接地址即可. 然后重启容器, 可以在Kibana界面的dev tools中验证是否安装成功
安装elasticsearch head插件监控管理 docker pull mobz/elasticsearch-head:5 docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5 在浏览器中打开elasticsearch-head页面,填入ElasticSearch地址
安装filebeat+logstash进行日志过滤 在客户端机器上面安装filebeat 配置yum源 cat /etc/yum.repos.d/filebeat.repo [filebeat] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts./packages/7.x/yum gpgcheck=0 gpgkey=https://artifacts./GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md 执行yum makecache && yum install filebeat* -y vi /etc/filebeat/filebeat.yml
systemctl restart filebeat docker pull logstash:7.6.2 docker run -itd --name logstash -p 5044:5044 -v /etc/logstash/config:/usr/share/logstash/config -v /etc/logstash/pipeline:/usr/share/logstash/pipeline logstash:7.6.2 cat /etc/logstash/config/logstash.conf
最后提醒:线上环境要求持续提供服务,即使在服务器出现问题时,及时修复及时提供服务,比如异常断电宕机,或者重启机器后,所以需要配置docker及各个服务器开机自动启动! Docker容器启动时加入--restart=always 就ok啦!
白驹过隙,当看到比你优秀的人比你还努力的时候,你也会越来越优秀,相信越努力越幸运! |
|