使用 ELK 进行日志管理
从群集节点管理系统和应用程序日志
本文档涵盖和不涵盖的内容
本文档介绍了如何将 Filebeat 输出从每个节点发送到集中式 Elasticsearch 实例。本文档介绍如何从 Filebeat 直接传输到 Elasticsearch。此架构中没有使用 Logstash。如果您有兴趣筛选、解析和了解处于中间 Logstash 阶段的日志,请参阅 Logstash 文档 以及 中的示例。
本文档未介绍如何设置和配置 Elasticsearch 服务器。本文档未介绍如何在 Filebeat 实例和 Elasticsearch 之间建立安全的 TLS 通信。有关如何实现此操作的详细信息,请参阅 Filebeat 和 文档。
前提条件
- 现有 Elasticsearch 装置可以消化数据用于索引
- 所有 DC/OS 节点都必须能够连接到用于在 Elasticsearch 和 Filebeat 之间通信的端口上的 Elasticsearch 服务器(默认情况下为 9200)
- 安装 Elastic 的 Filebeat。
-
创建 目录:
sudo mkdir -p /var/log/dcos
-
填充新的
filebeat.yml
配置文件,包括文件的附加输入条目/var/log/dcos/dcos.log
。附加日志文件将用于在后续步骤中捕获 DC/OS 日志。记住用下面的变量$ELK_HOSTNAME
和$ELK_PORT
替代 Elasticsearch 正在侦听的主机和端口的实际值。filebeat.prospectors:
- input_type: log
paths:
- /var/lib/mesos/slave/slaves//frameworks//executors//runs/latest/stdout
- /var/lib/mesos/slave/slaves//frameworks//executors//runs/latest/stderr
- /var/log/mesos/.log
- /var/log/dcos/dcos.log
tail_files: true
output.elasticsearch:
hosts: ["$ELK_HOSTNAME:$ELK_PORT"]
-
对于所有节点,启动并启用在上面创建的 Filebeat 日志解析服务:
sudo chmod 0755 /etc/systemd/system/dcos-journalctl-filebeat.service
sudo systemctl daemon-reload
sudo systemctl start dcos-journalctl-filebeat.service
sudo systemctl enable dcos-journalctl-filebeat.service
sudo systemctl start filebeat
sudo systemctl enable filebeat
ELK 堆栈将接收、存储、搜索和显示有关以上为群集中所有节点配置的 Filebeat 实例所解析的日志的信息。
本文档介绍如何从 Filebeat 直接传输到 Elasticsearch。此架构中没有使用 Logstash。如果您有兴趣筛选、剖析和了解处于中间 Logstash 阶段的日志,请参阅 Logstash 。
您必须修改默认参数值才能让 Elasticsearch 准备好接收信息。例如,编辑 Elasticsearch 配置文件(通常为 ):
应在所有节点上配置日志轮换,以防止文件 /var/log/dcos/dcos.log
无限制地增大和装满磁盘空间。logrotate
配置应包含 copytruncate
,因为 journalctl
管道保持打开状态,即使在轮换后仍然指向同一个文件。使用 copytruncate
时,复制文件和将其截断之间的窗口很小,因此某些记录数据可能丢失 - 应该平衡装满磁盘和丢失某些日志之间的利弊。
例如,logrotate
配置应当是这样的:
/var/log/dcos/dcos.log {
size 100M
copytruncate
rotate 5
compress
后续步骤
有关如何使用 ELK 筛选日志的详细信息,请参阅 。