使用docker搭建ELK日志搜集系统(一)
导读:本篇主要介绍ELF/EFK中Elasticsearch、Kibana的配置安装
ELK是什么?
简单来说ELK 是一个开源的日志统一搜集,存储,管理,分析,展示的平台
ELK架构
# 主要组件包括:
- ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部
- Elasticsearch 是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能
- Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式
- Kibana 是一个开源和免费的工具,可以为ElasticSearch提供日志分析友好Web界面
- Filebeat 可以理解成时一个轻量级的Logstash,因为相对来说Logstash资源消耗比较大(JVM内存),Filebeat可以把搜集的日志转发到Logstash
- fluented 是一个开源免费的日志搜集工具,经常代替Logstash(EFK),支持的插件非常多,对docker支持较好
- X-Pack是一个Elastic Stack的扩展,将安全,警报,监视,报告和图形功能包含在一个易于安装的软件包中
参考:
https://www.elastic.co/guide/index.html
https://docs.fluentd.org/v1.0/articles/quickstart
https://www.elastic.co/downloads/x-pack
https://www.elastic.co/products/x-pack/open
ELK/EFK的安装配置
# 系统安装运行需求和建议:
1. 一台独立的linux host centos 7.4,docker 18.06.1-ce+以上版本,docker swarm环境,
2. 自定义Kibana服务器的域名:log.yujianbo.vip ,可以在hosts文件自定义指向对应的服务器
3. 把ELK集群安装在一个独立的docker swarm环境中
4. 安装The Elastic Stack 5.5.1版本
# 安装步骤:
1. 安装docker swarm环境
简单docker swarm环境搭建步骤:https://www.cnblogs.com/yjb007/p/9551878.html
2.修改docker宿主机的 vm.max_map_count
配置在 /etc/sysctl.conf
vim /etc/sysctl.conf vm.max_map_count=262144 grep vm.max_map_count /etc/sysctl.conf sysctl -w vm.max_map_count=262144
3.安装Elasticsearch+X-Pack扩展包
mkdir -p /soft/es/ cd /soft/es/ #下载x-pack-5.5.1.zip,x-pack-5.5.1.jar文件到当前目录,下载地址:https://pan.baidu.com/s/12x5vxYwJHAvd3AnFc1M4_A cat > Dockerfile << 'EOF' FROM elasticsearch:5.5.1 COPY x-pack-5.5.1.zip /tmp/ RUN elasticsearch-plugin install file:///tmp/x-pack-5.5.1.zip COPY x-pack-5.5.1.jar /usr/share/elasticsearch/plugins/x-pack/x-pack-5.5.1.jar RUN chown root:root /usr/share/elasticsearch/plugins/x-pack/x-pack-5.5.1.jar && chmod 644 /usr/share/elasticsearch/plugins/x-pack/x-pack-5.5.1.jar RUN rm -rf /tmp/* EOF docker build --no-cache --pull -t elasticsearch/yujianbo:5.5.1 ./ mkdir -p /srv/volume/elasticsearch/data docker service create \ --name pilipa-inside-elasticsearch \ --network my-network \ --replicas 1 \ --publish "mode=host,published=9200,target=9200" \ --mount type=bind,src=/srv/volume/elasticsearch/data,dst=/usr/share/elasticsearch/data \ --env "cluster.name=docker-cluster" \ --env ES_JAVA_OPTS="-Xms512m -Xmx512m" \ elasticsearch/yujianbo:5.5.1
安装完成后可以通过 curl -u elastic:changeme http://127.0.0.1:9200/_cat/health 访问elasticsearch
默认账号密码:elastic/changeme
4.安装Kibana+X-Pack扩展包
mkdir -p /soft/kibana/ cd /soft/kibana/ #下载x-pack-5.5.1.zip文件到当前目录,下载地址:https://pan.baidu.com/s/12x5vxYwJHAvd3AnFc1M4_A cat > Dockerfile << 'EOF' FROM kibana:5.5.1 COPY x-pack-5.5.1.zip /tmp/ RUN kibana-plugin install file:///tmp/x-pack-5.5.1.zip RUN rm -rf /tmp/* EOF docker build --no-cache --pull -t kibana/yujianbo:5.5.1 ./ mkdir -p /srv/volume/kibana/ cat > /srv/volume/kibana/kibana.yml << 'EOF' server.host: '0.0.0.0' elasticsearch.url: 'http://pilipa-inside-elasticsearch:9200' EOF docker service create \ --name pilipa-inside-kibana \ --network my-network \ --replicas 1 \ --mount type=bind,src=/srv/volume/kibana/kibana.yml,dst=/etc/kibana/kibana.yml \ --publish "mode=host,published=5601,target=5601" \ kibana/yujianbo:5.5.1
登陆http://log.yujianbo.vip:5601就可以在kibana页面了,默认账号密码:elastic/changeme
5.更新X-PACK licence信息
#在Dev Tools中输入下面的信息进行licence更新
PUT _xpack/license { "license": { "uid": "568c8040-63fe-4fb7-81e4-f8fe94693ef9", "type": "platinum", "issue_date_in_millis": 1505174400000, "expiry_date_in_millis": 2536796799999, "max_nodes": 100, "issued_to": "jianbo yu (i-counting)", "issuer": "Web Form", "signature": "AAAAAwAAAA1H1ROSSTmyGk1iX87BAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQBxmqnrW+hya/tr/l/aHmLpUpwYMJ7NLCpzr2SRMbjNcJqZGQZYwqCn37MNtMQuNrYF3EJ41wDOKEf4MoOEg593iK+Q1Iih8n9eWhcKh0uHqa2hLu4aBE2cIBb7aedj7/JGMthQLbc5M7xgtcUG1O3n4q0plgm/teRuHxW+ray8tj/daNuXgUAIoFDrWfNmPnCjphLGjg9brzf7KauIYy7zCpcGO/QItIgaFgFV8tUuhwI3ns42O5MIjgUEmt1oG8ZGiqoJg6U/J7UN1/zRjzbyZSyzmGh9YI97sEvYgu72O7p6vMOoJoEVvnFgr4nlSUp6cQyovlnxKgxsab9BKzjV", "start_date_in_millis": 1505174400000 } }
6.在Management中创建只读kibana_read Role
下一章介绍通过ELK/EFK搜集docker上容器的日志
参考资料:
https://www.docker.elastic.co/#