ansible-role-collect-logs - 用于从不同节点收集日志的Ansible角色。
项目描述
Ansible角色,用于从不同节点收集日志。
调用此角色的唯一支持方式是使用其主入口点。请勿使用tasks_from,因为这算作使用私有接口。
需求
此角色从目标系统收集日志和调试信息,并将它们收集在本地主机的指定目录artcl_collect_dir中。
此外,此角色将TripleO-Quickstart在部署期间创建和使用的模板bash脚本转换为rST文件。这些rST文件与静态rST文件结合,输入Sphinx以创建针对原始部署的用户友好型后构建文档。
最后,此角色可选地将这些日志上传到rsync服务器或OpenStack Swift对象存储。可以通过os-loganalyze公开Swift的日志。
角色变量
文件收集
artcl_collect_list – 要从目标收集的文件和目录列表。目录递归收集并需要以‘/’结尾以被收集。应指定为YAML列表,例如。
artcl_collect_list:
- /etc/nova/
- /home/stack/*.log
- /var/log/
artcl_collect_list_append – 要追加到默认列表中的文件和目录列表。这对于希望保留原始列表并仅添加更多相关路径的用户很有用。
artcl_exclude_list – 要排除在收集之外的文件和目录列表。此列表传递给rsync作为排除过滤器,并且它优先于收集列表。有关详细信息,请参阅rsync手册页中的“FILTER RULES”主题。
artcl_exclude_list_append – 要追加到默认排除列表中的文件和目录列表。这对于想要保留原始列表并仅添加更多相关路径的用户很有用。
artcl_collect_dir – 应该收集日志的本地目录,后面不带斜杠。
collect_log_types - 要收集的日志类型列表,例如openstack日志、网络日志、系统日志等。可接受值有system、monitoring、network、openstack和container。
artcl_gzip:归档文件,默认禁用。
artcl_rsync_collect_list - 如果为true,则生成用于< span class="docutils literal">rsync收集文件的rsync过滤器文件,如果为false,则使用< span class="docutils literal">find生成用于< span class="docutils literal">rsync收集的文件列表。< span class="docutils literal">find带来了某些好处,例如在特定深度(< span class="docutils literal">artcl_find_maxdepth)内搜索文件或达到特定大小(< span class="docutils literal">artcl_find_max_size)。
artcl_find_maxdepth - 从起始点以下的目录层级数,默认为4。注意:此变量仅在< span class="docutils literal">artcl_rsync_collect_list设置为false时应用。
artcl_find_max_size - 要包含在find搜索中的文件的最大大小(MB),默认值为256。注意:此变量仅在< span class="docutils literal">artcl_rsync_collect_list设置为false时应用。
artcl_commands_extras - 在收集期间要运行的附加命令的嵌套字典。第一级包含由< span class="docutils literal">collect_log_types列表定义的组类型,该列表确定哪些组被收集以及哪些组被跳过。
定义的密钥将覆盖来自默认< span class="docutils literal">artcl_commands的隐式密钥,默认< span class="docutils literal">artcl_commands不期望用户更改。
第二级密钥用于唯一标识一个命令并确定默认输出文件名,除非通过< span class="docutils literal">capture_file属性指定。
cmd包含将要运行的shell命令。
artcl_commands_extras:
system:
disk-space:
cmd: df
# will save output to /var/log/extras/dist-space.log
mounts:
cmd: mount -a
capture_file: /mounts.txt # <-- custom capture file location
openstack:
key2:
cmd: touch /foo.txt
capture_disable: true # <-- disable implicit std redirection
when: "1 > 2" # <-- optional condition
日志解析
“Sova”模块解析日志以查找已知模式,并返回找到的消息。模式按问题类型标记,如“基础设施”、“代码”等。模式位于vars目录下的sova-patterns.yml文件中。
config - 从文件加载的模式
files - 文件和模式部分匹配
result - 写入解析结果的文件路径
result_file_dir - 写入包含模式的文件的目录
“sova”模块使用示例
---
- name: Run sova task
sova:
config: "{{ pattern_config }}"
files:
console: "{{ ansible_user_dir }}/workspace/logs/quickstart_install.log"
errors: "/var/log/errors.txt"
"ironic-conductor": "/var/log/containers/ironic/ironic-conductor.log"
syslog: "/var/log/journal.txt"
logstash: "/var/log/extra/logstash.txt"
result: "{{ ansible_user_dir }}/workspace/logs/failures_file"
result_file_dir: "{{ ansible_user_dir }}/workspace/logs"
示例角色剧本
---
- name: Gather logs
hosts: all:!localhost
roles:
- collect_logs
- **注意
收集节点数据的任务使用ignore_errors执行。例如:示例:
模板化Bash到rST转换说明
在部署期间使用的模板化bash脚本在角色的调用部分的create-docs部分转换为rST文件。shell脚本被输入到awk脚本中,并以restructured text输出。awk脚本有几个简单的规则
只有位于### ---start_docs和### ---stop_docs之间的行将被解析。
包含# nodoc的行将被排除。
包含## ::的行表示后续行应格式化为代码块
以## <anything else>开始的行将移除前缀##。这就是添加通用rST格式化的方式和位置。
所有其他行,包括shell注释,将缩进四格。
启用sosreport收集
sosreport 是一个用于收集系统日志和其他调试信息的统一工具。为了启用使用此角色创建 sosreport 的功能,请创建一个自定义配置(您可以使用 centosci-logs.yml 作为模板)并确保设置 artcl_collect_sosreport: true。
清理日志字符串
日志可能包含敏感数据,如私有链接和访问密码。‘collect’任务提供了一个选项,可以将私有字符串替换为清理后的字符串以保护私有数据。
‘sanitize_log_strings’任务使用 Ansible 的‘replace’模块,并通过定义下面的示例中所示的 sanitize_lines 变量来启用。
---
sanitize_lines:
- dir_path: '/tmp/{{ inventory_hostname }}/etc/repos/'
file_pattern: '*'
orig_string: '^(.*)download(.*)$'
sanitized_string: 'SANITIZED_STR_download'
- dir_path: '/tmp/{{ inventory_hostname }}/home/zuul/'
file_pattern: '*'
orig_string: '^(.*)my_private_host\.com(.*)$'
sanitized_string: 'SANITIZED_STR_host'
任务会在文件路径中搜索包含敏感字符串(orig_string)的文件,然后在这些文件中将敏感字符串替换为清理后的字符串。
与红外线一起使用
执行以下步骤以使用 infrared 执行角色。
通过提供此存储库的 URL 安装红外线和添加 ansible-role-collect-logs 插件
(infrared)$ ir plugin add https://opendev.org/openstack/ansible-role-collect-logs.git --src-path infrared_plugin
通过以下方式验证插件是否已导入:
(infrared)$ ir plugin list
运行插件
(infrared)$ ir ansible-role-collect-logs
许可证
Apache 2.0
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源分布
构建分布
散列 for ansible_role_collect_logs-1.5.0-py2.py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | 0abe265d1be40bec168a8ebe524b884fbca211a1d493009f6f8e663687db6129 |
|
MD5 | a021d9fccd9d582630e67b6dddba9354 |
|
BLAKE2b-256 | bc37ac363be721a6553ce6b456e090c132e8b1f8d07016179745db26ddb95073 |