thulium_drake.journald

通过 Ansible 实现集中日志记录

该角色提供了一种通过 systemd-journald 在中央系统上收集系统日志的方法。

所有日志都保存在 vars 中指定为 journald_server 的系统上。当在该主机上运行角色时,它将配置日志收集器。

使用方法

  • 安装该角色(可以从 Galaxy 或直接从 GitHub 安装)
  • 将默认文件复制到您的清单中(或您存储它们的地方)并填写空白
  • 将角色添加到您的主剧本中
  • 运行 Ansible
  • ???
  • 获利!

分析日志

可以使用与读取本地日志相同的 journalctl 工具来搜索或阅读收集的日志。以下是一些示例:

  • 实时查看所有进入的日志
journalctl -f -D /log
  • 实时查看来自特定单元文件的所有日志(在任何机器上)
journalctl -f -D /log -u my-thing.service

SSL

在启用 SSL 的情况下运行该角色时,请确保提供以下内容:

  • 供 systemd-journal-upload 用户访问的 CA 证书(自签名或其他)
  • 由该 CA 签署的日志主机系统的服务器证书,供 systemd-journal-remote 用户访问

自签名的“单独”证书 将无法 工作!

请注意,如果您希望在 Systemd 版本高于 234 的系统上运行此角色,必须 为客户端准备一个客户端证书,以便它们能够对 journald 服务器进行身份验证。该证书可以在所有客户端之间共享。

以下是安装(自行提供证书)证书的示例脚本:

- name: '确保 journald 客户端证书组'
  group:
    name: 'journald-cert'
    system: true
    state: 'present'

- name: '确保 journald 客户端证书目录'
  file:
    path: '/etc/ssl/journald'
    state: 'directory'
    owner: 'root'
    group: 'journald-cert'
    mode: 0770

- name: '确保证书文件'
  copy:
    src: "{{ cert.src }}"
    dest: "{{ cert.dest }}"
    owner: 'root'
    group: 'journald-cert'
    mode: 0440
  loop:
    - src: "{{ journald_certificate_source }}"
      dest: '/etc/ssl/journald/client.crt'
    - src: "{{ journald_key_source }}"
      dest: '/etc/ssl/journald/client.key'
  loop_control:
    loop_var: 'cert'

这种方法已在相同环境中的 CentOS7 和 CentOS8 上进行了测试。

BUG:CentOS7(或其他包含 systemd 219 的系统)

该版本的 systemd-journal-remote 中存在一个错误,导致日志保存在一个以事务的 接收 端命名的文件中。在该角色配置的被动源的情况下,这意味着所有日志都将收集在一个单独的文件中。

关于项目

Systemd Journald log forwarding & collection by Ansible

安装
ansible-galaxy install thulium_drake.journald
许可证
gpl-3.0
下载
226
拥有者