共计 2025 个字符,预计需要花费 6 分钟才能阅读完成。
ELK 简介
ELK 是一个开源的日志管理解决方案,由 Elasticsearch、Logstash 和 Kibana 三个组件构成。每个组件的作用如下:
-
Elasticsearch:分布式搜索引擎,用于存储、搜索和分析日志数据。
-
Logstash:日志收集、处理和转换工具,用于将不同来源的日志数据收集并处理成统一格式,以便于存储和分析。
-
Kibana:数据可视化工具,用于查询、分析和展示 Elasticsearch 中存储的日志数据。
ELK 可以帮助用户快速、高效地管理海量的日志数据,从而实现对系统性能、安全性等方面的监控和分析。它支持多种数据源,包括文件、网络流量、数据库等,还提供了丰富的插件和扩展机制,可以满足不同的业务需求。同时,它还提供了强大的搜索、聚合、可视化和警报功能,可以让用户更加方便地理解和利用日志数据。
ELK 搭建
1. 创建网卡
创建一块 elk 的网卡,待会所有容器通过这块网卡进行通信。
docker network create elk
2. 安装 elasticsearch
注意:这里指定容器名称需要指定为 elasticsearch,因为 kibana 容器的配置文件 kibana.yml 中默认 es 的地址为 elasticsearch。否则,需要修改 kibana 的配置文件。
docker run -d \
--name elasticsearch \
--net elk \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
-v /home/docker/es/plugins:/usr/share/elasticsearch/plugins \
-v /home/docker/es/data:/usr/share/elasticsearch/data \
elasticsearch:7.16.1
如果提示报错:
ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];
Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
这是因为 es 没有权限,执行如下代码即可。
chmod 777 /home/docker/es/data && docker restart elasticsearch
安装完成后访问 9200 端口。
3. 安装 kibana
docker run -d \
--name kibana \
--net elk \
-p 5601:5601 \
kibana:7.14.2
安装后访问 5601 端口用接口查询 es 数据。
4. 安装 logstash
这里因为用作测试,把宿主机 /var/log/messages
文件映射到容器内部供 logstash 容器进行读取并输出到 elasticsearch。
# 创建 logstash 全局配置文件
mkdir -p /home/docker/logstash/conf.d &&
cat > /home/docker/logstash/logstash.yml <<EOF
path.config: /usr/share/logstash/conf.d/*.conf
path.logs: /var/log/logstash
EOF
# 创建 log 配置文件
cat > /home/docker/logstash/conf.d/log.conf <<EOF
input {
file {
#标签
type => "systemlog-localhost"
#采集点
path => "/var/log/messages"
#开始收集点
start_position => "beginning"
#扫描间隔时间,默认是1s,建议5s
stat_interval => "5"
}
}
output {
elasticsearch { hosts => ["elasticsearch:9200"] }
stdout { codec => rubydebug }
}
EOF
docker run -d \
--name logstash \
--net elk \
-u root \
-p 5044:5044 \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
-v /home/docker/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml \
-v /home/docker/logstash/conf.d/:/usr/share/logstash/conf.d/ \
-v /var/log/messages:/var/log/messages \
logstash:6.8.19
在 kibana 里面获取索引,会发现多了一条 logstash 产生的索引。
查看日志。
提醒:本文发布于612天前,文中所关联的信息可能已发生改变,请知悉!