跳转到主要内容

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脚本有几个简单的规则

  1. 只有位于### ---start_docs### ---stop_docs之间的行将被解析。

  2. 包含# nodoc的行将被排除。

  3. 包含## ::的行表示后续行应格式化为代码块

  4. ## <anything else>开始的行将移除前缀##。这就是添加通用rST格式化的方式和位置。

  5. 所有其他行,包括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 执行角色。

  1. 通过提供此存储库的 URL 安装红外线和添加 ansible-role-collect-logs 插件

    (infrared)$ ir plugin add https://opendev.org/openstack/ansible-role-collect-logs.git --src-path infrared_plugin
  2. 通过以下方式验证插件是否已导入:

    (infrared)$ ir plugin list
  3. 运行插件

    (infrared)$ ir ansible-role-collect-logs

许可证

Apache 2.0

作者信息

RDO-CI 团队

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分布

ansible-role-collect-logs-1.5.0.tar.gz (132.2 kB 查看散列)

上传时间

构建分布

ansible_role_collect_logs-1.5.0-py2.py3-none-any.whl (148.0 kB 查看散列)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面