Docker安装单机版ELK日志收集系统
概述
现在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.docker.com/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.elastic.co/packages/7.x/yum
gpgcheck=0
gpgkey=https://artifacts.elastic.co/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啦!
白驹过隙,当看到比你优秀的人比你还努力的时候,你也会越来越优秀,相信越努力越幸运!