使用 ELK 进行日志管理

从群集节点管理系统和应用程序日志

本文档涵盖和不涵盖的内容

本文档介绍了如何将 Filebeat 输出从每个节点发送到集中式 Elasticsearch 实例。本文档介绍如何从 Filebeat 直接传输到 Elasticsearch。此架构中没有使用 Logstash。如果您有兴趣筛选、解析和了解处于中间 Logstash 阶段的日志,请参阅 Logstash 文档 以及 中的示例。

本文档未介绍如何设置和配置 Elasticsearch 服务器。本文档未介绍如何在 Filebeat 实例和 Elasticsearch 之间建立安全的 TLS 通信。有关如何实现此操作的详细信息,请参阅 Filebeat 和 文档。

前提条件

  • 现有 Elasticsearch 装置可以消化数据用于索引
  • 所有 DC/OS 节点都必须能够连接到用于在 Elasticsearch 和 Filebeat 之间通信的端口上的 Elasticsearch 服务器(默认情况下为 9200)
  1. 安装 Elastic 的 Filebeat
  2. 创建 目录:
    1. sudo mkdir -p /var/log/dcos
  3. 填充新的 filebeat.yml 配置文件,包括文件的附加输入条目 /var/log/dcos/dcos.log。附加日志文件将用于在后续步骤中捕获 DC/OS 日志。记住用下面的变量 $ELK_HOSTNAME$ELK_PORT 替代 Elasticsearch 正在侦听的主机和端口的实际值。
    1. filebeat.prospectors:
    2. - input_type: log
    3. paths:
    4. - /var/lib/mesos/slave/slaves//frameworks//executors//runs/latest/stdout
    5. - /var/lib/mesos/slave/slaves//frameworks//executors//runs/latest/stderr
    6. - /var/log/mesos/.log
    7. - /var/log/dcos/dcos.log
    8. tail_files: true
    9. output.elasticsearch:
    10. hosts: ["$ELK_HOSTNAME:$ELK_PORT"]
重要信息:代理节点 Filebeat 配置要求任务将日志写入 stdoutstderr。某些 DC/OS 服务(包括 Cassandra 和 Kafka)不会将日志写入 stdoutstderr。如果要记录这些服务,您必须自定义代理节点 Filebeat 配置。 ## 步骤 2:为分析日志设置服务 对于 DC/OS 群集中的所有节点:
  1. 对于所有节点,启动并启用在上面创建的 Filebeat 日志解析服务:
    1. sudo chmod 0755 /etc/systemd/system/dcos-journalctl-filebeat.service
    2. sudo systemctl daemon-reload
    3. sudo systemctl start dcos-journalctl-filebeat.service
    4. sudo systemctl enable dcos-journalctl-filebeat.service
    5. sudo systemctl start filebeat
    6. sudo systemctl enable filebeat

ELK 堆栈将接收、存储、搜索和显示有关以上为群集中所有节点配置的 Filebeat 实例所解析的日志的信息。

本文档介绍如何从 Filebeat 直接传输到 Elasticsearch。此架构中没有使用 Logstash。如果您有兴趣筛选、剖析和了解处于中间 Logstash 阶段的日志,请参阅 Logstash 。

您必须修改默认参数值才能让 Elasticsearch 准备好接收信息。例如,编辑 Elasticsearch 配置文件(通常为 ):

应在所有节点上配置日志轮换,以防止文件 /var/log/dcos/dcos.log 无限制地增大和装满磁盘空间。logrotate 配置应包含 copytruncate,因为 journalctl 管道保持打开状态,即使在轮换后仍然指向同一个文件。使用 copytruncate 时,复制文件和将其截断之间的窗口很小,因此某些记录数据可能丢失 - 应该平衡装满磁盘和丢失某些日志之间的利弊。

例如,logrotate 配置应当是这样的:

  1. /var/log/dcos/dcos.log {
  2. size 100M
  3. copytruncate
  4. rotate 5
  5. compress

后续步骤

有关如何使用 ELK 筛选日志的详细信息,请参阅 。