13.4. 过滤本地日志记录系统角色中的 logging
您可以部署一个日志解决方案,该方案基于 rsyslog
属性的过滤器过滤日志。
先决条件
-
对一个或多个 受管节点 的访问和权限,这些节点是您要使用
logging
系统角色配置的系统。 对 控制节点 的访问和权限,这是 Red Hat Ansible Core 配置其他系统的系统。
在控制节点上:
- 安装了 Red Hat Ansible Core
-
rhel-system-roles
软件包已安装 - 列出受管节点的清单文件。
注意
您不必安装 rsyslog
软件包,因为系统管理员在部署时会安装 rsyslog
。
流程
使用以下内容创建新的
playbook.yml
文件:--- - name: Deploying files input and configured files output hosts: all roles: - linux-system-roles.logging vars: logging_inputs: - name: files_input type: basics logging_outputs: - name: files_output0 type: files property: msg property_op: contains property_value: error path: /var/log/errors.log - name: files_output1 type: files property: msg property_op: "!contains" property_value: error path: /var/log/others.log logging_flows: - name: flow0 inputs: [files_input] outputs: [files_output0, files_output1]
使用这个配置,包含
error
字符串的所有消息都会记录在/var/log/errors.log
中,所有其他消息都记录在/var/log/others.log
中。您可以将
error
属性值替换为您要过滤的字符串。您可以根据您的偏好修改变量。
可选:验证 playbook 语法:
# ansible-playbook --syntax-check playbook.yml
在清单文件上运行 playbook:
# ansible-playbook -i inventory_file /path/to/file/playbook.yml
验证
测试
/etc/rsyslog.conf
文件的语法:# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.
验证系统是否向日志发送包含
error
字符串的信息:发送测试信息:
# logger error
查看
/var/log/errors.log
日志,例如:# cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: error
其中
hostname
是客户端系统的主机名。请注意,该日志包含输入 logger 命令的用户的用户名,本例中为root
。
其他资源
-
与
rhel-system-roles
软件包一起安装的文档在/usr/share/ansible/roles/rhel-system-roles.logging/README.html