ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。
Elastic Stack 是 ELK Stack 的更新换代产品。
ELK官网:ELK Stack:Elasticsearch 的开发者倾心打造 | Elastic
Filebeat 让简单的事情简单化
Filebeat 内置有多种模块(Apache、Cisco ASA、Microsoft Azure、NGINX、MySQL 等等),可针对常见格式的日志大大简化收集、解析和可视化过程,只需一条命令即可。之所以能实现这一点,是因为它将自动默认路径(因操作系统而异)与 Elasticsearch 采集节点管道的定义和 Kibana 仪表板组合在一起。不仅如此,数个 Filebeat 模块还包括预配置的 Machine Learning 任务。
Filebeat官网:Filebeat:轻量型日志分析与 Elasticsearch | Elastic
一、下载ELK镜像
docker pull sebp/elk:750
PS:镜像较大,时间较长!!!
二、对 sysctl.conf 文件 进行修改
echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p
三、运行 ELK
PS:建议 线上服务器 4核 16G 以上,不然运行很吃力(配置越高越好,O(∩_∩)O哈哈~)
为了保证安全,请在 内网 中搭建!!! 外网环境大家可以了解一下 阿里云SLS
# elk数据
mkdir -p /usr/local/docker/elkdata
# kibana 配置文件夹
mkdir -p /usr/local/docker/kibana
# 从 elk 容器中复制 kibana 配置文件
docker cp elk:/opt/kibana/config/kibana.yml /usr/local/docker/
docker run -d -p 5601:5601 -p 9200:9200 -p 5044:5044 --restart=always \
-v /usr/local/docker/elkdata:/var/lib/elasticsearch \
-v /usr/local/docker/kibana/:/opt/kibana/config/ \
-e "TZ=Asia/Shanghai" -e LOGSTASH_START=0 -e ES_HEAP_SIZE="512m" \
--name elk sebp/elk:750
命令详解:elk-docker
Kibana中文版
修改 /usr/local/docker/kibana.yml
i18n.locale: "zh-CN"
访问 IP:5601,如图:
四、下载 Filebeat 镜像
docker pull elastic/filebeat:7.5.0
PS:要与 ELK 镜像版本统一
五、运行 Filebeat
filebeat.yml
# 定义demo1、demo2等应用的input类型、以及存放的具体路径
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/demo1/*.log
fields.source: demo1
- type: log
enabled: true
paths:
- /var/log/demo2/*.log
fields.source: demo2
# 定义模板的相关信息
setup.template:
name: "meng"
pattern: "meng-*"
overwrite: true
enabled: true
# 自定义ES的索引需要把ilm设置为false
setup.ilm.enabled: false
#-------------------------- Elasticsearch output ------------------------------
output.elasticsearch:
hosts: ["IP:9200"]
index: "meng-%{[fields.source]}-*"
indices:
- index: "meng-demo1-%{+yyyy.MM.dd}"
when.equals:
fields.source: "demo1"
- index: "meng-demo2-%{+yyyy.MM.dd}"
when.equals:
fields.source: "demo2"
#============================== Kibana =====================================
setup.kibana:
host: "IP:5601"
setup.dashboards:
enabled: true
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
运行命令
# demo1 日志文件夹
mkdir -p /usr/local/docker/demo1
# demo2 日志文件夹
mkdir -p /usr/local/docker/demo2
# filebeat 配置文件夹
mkdir -p /usr/local/docker/filebeat
docker run -d -v /usr/local/docker/demo1/:/var/log/demo1/ --restart=always \
-v /usr/local/docker/demo2/:/var/log/demo2/ \
-v /usr/local/docker/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
--name filebeat elastic/filebeat:7.5.0
六、Kibana 查看日志
PS:测试的是 SpringBoot 项目日志
EK官网:Elastic Stack:Elasticsearch、Kibana、Beats 和 Logstash | Elastic