docker虚拟化下的ELK日志体系
docker虚拟化下的ELK日志体系
这个是未使用docker虚拟化的ELK技术文档,如果有需要的小伙伴请参考https://blog.csdn.net/qq_43891456/article/details/102234103
先简单的介绍一下ELK体系
ELK的应用场景
我们一般获取日志文件直接从服务的日志目录里面获取,但是如果我们的服务体系比较大的情况下,这样的获取方式效率低,重复性高,面临的问题包括日志量太大如何归档,文本搜索太慢,如何集中化管理日志文件,这时候我们的ELK服务完全能解决我的这些问题,可以实现图像化查看日志,日志汇总,集中化管理
我们用到的方案
Filebeat(采集)–>Logstash(聚合、处理)–>ElasticSearch(存储)–>Kibana(展示)
ELK组件组成
- filebeat:和logstash一样属于日志收集处理工具,与logstash相比,filebeat更加轻量,占用资源更少,进行日志收集交给logstash进行处理
- logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用,logstash通过iter模块进行日志过滤变成指定的格式交给es
- elasticsearch日志存储和搜索引擎,它的特点有:分布式,高性能,高可用,可伸缩的实时搜索和分析引擎 ,es进行存储然后给每个字段加入索引方便查找
- kibana也是一个开源和免费的工具,kibana可以为logstash和elasticsearch提供的日志分析友好的web界面,
日志系统的三个基本组件:
- 采集端:agent(采集日志数据,封装数据源,将数据源中的数据发送给collector)
- 聚合端:collector(按一定规则进行数据处理,接收多个agent的数据,并进行汇总后导入后端的host中)
- 存储端:store(日志存储系统,应该具有可扩展性和可靠性,如HDFS、ES等)
实验环境
只需要一台还有docker环境的服务器,
官方文档
https://elk-docker.readthedocs.io/
On Linux, you can increase the limits by running the following command as root
:
sysctl -w vm.max_map_count=262144
To set this value permanently, update the vm.max_map_count
setting in /etc/sysctl.conf
.添加
vm.max_map_count=262144
To verify after rebooting, run sysctl vm.max_map_count
.
下载ELK环境:只能在docker容器中使用。
[root@localhost ~]# docker pull sebp/elk
- 1
生成elk容器并开始端口映射
[root@localhost vm]# docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -itd -e ES_HEAP_SIZE="2g" -e LS_HEAP_SIZE="1g" --name elk sebp/elk
30f4c18fc6e724b1c8cda814e64cec00257807aedac1943f596ec17e9905214a
- 1
- 2
5601:kibana端口
9200:ES端口
5044:logstash端口
访问kibana
[root@localhost ~]# firefox 192.168.43.234:5601
- 1
这个目录表示容器的日志存放位置(/var/lib/docker/containers//.log)
[root@bogon ~]# cat /var/lib/docker/containers/0cecca93cb61657de8838efef07ec84fb326049b5aa04c1c44bbd326155ba87a/0cecca93cb61657de8838efef07ec84fb326049b5aa04c1c44bbd326155ba87a-json.log
- 1
采集日志需要安装Filebeat
下载中
[root@bogon ~]# curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.2.0-x86_64.rpm
- 1
rpm方式安装
[root@localhost ~]# rpm -vi filebeat-7.2.0-x86_64.rpm
- 1
filebeat配置文件,并修改ES、kibana、logseach的IP端口,IP地址写安装ELK的主机地址:
[root@bogon ~]# vim /etc/filebeat/filebeat.yml
24 enabled: true (修改)
28 - /var/lib/docker/containers/*/*.log (添加)
29 - /var/log/messages/*.log (添加)
126 host: "192.168.43.234:5601" (添加)本地IP
152 hosts: ["192.168.43.234:9200"] (修改)本地IP
- 1
- 2
- 3
- 4
- 5
- 6
启用和配置elasticsearch模块
[root@bogon ~]# filebeat modules enable elasticsearch
- 1
开启Filebeat
[root@bogon ~]# filebeat setup
[root@bogon ~]# systemctl start filebeat
- 1
- 2
然后去http://192.168.43.234:5601/app/kibana#/home/tutorial/elasticsearchLogs?_g=()页面验证进行最后的安装
进入页面,验证效果
[root@bogon ~]# docker run busybox sh -c 'while true; do echo "This is a log maessage from container busybox bu lds!!"; sleep 10; done;'
- 1