使用 Ansible Tower 和 Splunk Enterprise 集中您的自动化日志
使用 Ansible Tower 和 Splunk Enterprise 集中您的自动化日志
对于许多 IT 团队来说,自动化如今已成为核心组成部分。但自动化本身并不是孤立存在的——它是拼图的一部分,需要与周围的 IT 环境交互。因此,衡量自动化的一个方法是它与 IT 生态系统中的其他工具(例如中央日志基础设施)的集成程度。毕竟,通过中央日志,IT 团队可以快速了解正在发生的事情、发生地点以及状态。
Red Hat Ansible Automation Platform 是一个用于构建和运营大规模自动化的解决方案。作为平台的一部分,Ansible Tower 与外部日志解决方案(如 Splunk)很好地集成,并且易于设置。在本博文中,我们将演示如何在 Splunk 和 Ansible Tower 中执行必要的配置,以使它们能够协同工作。
Splunk 的设置
第一步是启动并运行 Splunk。您可以在 Splunk 主页 注册后下载 Splunk RPM。
注册后,下载 rpm 并执行安装
$ rpm -ivh splunk-8.0.3-a6754d8441bf-linux-2.6-x86_64.rpm warning: splunk-8.0.3-a6754d8441bf-linux-2.6-x86_64.rpm: Header V4 RSA/SHA256 Signature, key ID b3cd4420: NOKEY Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:splunk-8.0.3-a6754d8441bf ################################# [100%] complete
安装完成后,执行以下命令以启动服务并进行必要的设置。
$ /opt/splunk/bin/splunk start -accept-license
接受条款,设置用户名和密码,然后等待服务启动。
All preliminary checks passed. Starting splunk server daemon (splunkd)... Done [ OK ] Waiting for web server at http://127.0.0.1:8000 to be available... Done If you get stuck, we're here to help. Look for answers here: http://docs.splunk.com The Splunk web interface is at http://splunk-server:8000
访问 Web 界面并输入用户名和密码。
使用 Red Hat Ansible 内容集合配置数据输入
为了在 Splunk 中接收 Ansible Tower 日志,我们需要创建一个数据输入 TCP。为此,我们将使用 Splunk Enterprise Security 内容集合,该集合在自动化中心作为 Red Hat 托管内容集合版本的一部分提供。
此集合旨在支持 Splunk Enterprise Security(一个作为 Splunk Enterprise 附加应用程序提供的安全产品),并扩展其功能以提供安全信息和事件管理 (SIEM) 功能。Splunk Enterprise Security 利用底层平台的许多功能,因此,尽管它是为安全自动化用例开发的,但此集合中的大多数模块也可用于支持第 0 天和第 1 天的 IT 运营用例。如果您想详细了解作为 Ansible 安全自动化计划的一部分开发的 Ansible 内容集合如何帮助克服安全运营挑战,请查看我们 Roland Wolters 编写的博文“Ansible 安全自动化的入门:调查增强”。
截至今天,Splunk Enterprise Security 内容集合包含以下模块
-
adaptive_response_notable_event
- 管理 Splunk Enterprise Security 显著事件自适应响应 -
correlation_search
- 管理 Splunk Enterprise Security 关联搜索 -
correlation_search_info
- 管理 Splunk Enterprise Security 关联搜索 -
data_input_monitor
- 管理类型为 Monitor 的 Splunk 数据输入 -
data_input_network
- 管理类型为 TCP 或 UDP 的 Splunk 数据输入
如果您想详细了解集合以及如何开始使用它们,请查看我们 Ajay Chenampara 编写的博文“Ansible 集合实践”。
回到我们的用例,我们将使用 data_input_network 模块。首先,让我们安装集合 splunk.es
$ ansible-galaxy collection install splunk.es Process install dependency map Starting collection install process Installing 'splunk.es:1.0.0' to '/root/.ansible/collections/ansible_collections/splunk/es'
安装集合后,下一步是创建我们的清单
[splunk] splunk.customer.com [splunk:vars] ansible_network_os=splunk.es.splunk ansible_user=USER ansible_httpapi_pass=PASS ansible_httpapi_port=8089 ansible_httpapi_use_ssl=yes ansible_httpapi_validate_certs=True ansible_connection=httpapi
请注意,我们将连接类型设置为 httpapi:与 Splunk Enterprise Security 的通信通过 REST API 进行。此外,请记住根据您的环境调整身份验证、端口和证书数据。
接下来,让我们创建将设置输入网络的 playbook
--- - name: Splunk Data Input hosts: splunk gather_facts: False collections: - splunk.es tasks: - name: create splunk_data_input_network splunk.es.data_input_network: name: "9199" protocol: "tcp" source: "http:tower_logging_collections" sourcetype: "httpevent" state: "present"
让我们运行 playbook 以创建输入网络
$ ansible-playbook -i inventory.ini splunk_with_collections.yml
验证数据输入
要验证是否创建了我们的数据输入,请在 Splunk Web 界面中,单击**设置 -> 数据输入 -> TCP**。验证 TCP 端口是否列为源类型“httpevent”,如下面的屏幕截图所示
我们还可以通过检查端口 9199 是否打开以及是否接收连接来验证数据输入
$ telnet splunk.customer.com 9199 Trying 1.2.3.4... Connected to splunk.customer.com. Escape character is '^]'.
配置 Ansible Tower
Ansible Tower 中的活动流日志提供有关创建和删除对象的信息,例如记录 Ansible Tower 中的活动,有关更多信息和详细信息,请查看文档。
Splunk 设置完成后,让我们深入了解 Ansible Tower,并将这两个工具相互连接!首先,我们将配置 Ansible Tower 以将日志发送到 Splunk 中的数据输入。为此,我们输入 Ansible Tower 设置:在其中,选择“系统”并单击“日志记录”。这将打开 Ansible Tower 日志记录配置的概述,如下所示。在其中,我们指定 Splunk 的 URL 以及 URL 上下文 /services/collector/event
。此外,我们必须提供端口(此处为 9199),并选择正确的聚合器类型(此处为 Splunk)。现在选择协议 TCP,然后先单击“保存”按钮,然后单击“测试”按钮以验证我们的配置。
在 Splunk 中查看日志
现在 Ansible Tower 已全部设置好,让我们回到 Splunk 并检查日志是否已到达那里。在 Splunk 主页中,单击“搜索和报告”。在“搜索内容”中选择“数据摘要”。将打开一个窗口,您可以在其中单击“来源”列
单击源 http:tower_logging_collection,这将带我们到搜索屏幕,在该屏幕上可以查看从 Ansible Tower 收到的记录
如果一切正常,您应该会看到从 Ansible Tower 收到的最新的日志事件,表明这两个工具现在已正确连接。恭喜!
但我们不想止步于此:毕竟,日志记录的全部意义在于分析传入信息并从中获得意义。因此,让我们创建一个过滤器:单击要过滤的字段,然后选择“添加到搜索”。
之后,搜索字段将填充我们的过滤器。
创建简单的仪表板
在此示例中,我们将创建 Ansible Tower 生成的事件的简单图表。
我们将使用上一步中有关如何创建过滤器的步骤,但这次我们将过滤事件字段,并在搜索字段中保留以下内容
source="http:tower_logging_collection"| spath event | search event=*
使用 event = *
过滤所有事件。之后,单击左侧菜单上的“所有字段”按钮,选择事件字段,然后单击退出。完成后,单击“可视化”,然后选择“枢轴”选项,在窗口中选择“所选字段 (1)”并单击“确定”。
在此窗口中,我们将过滤器保留为“所有时间”,在“拆分列”中选择事件,然后“添加到表格”,之后我们就可以查看以列分隔的信息,其中列名是事件,以及它们在日志中出现的次数。
查看列中的信息后,单击“另存为”并选择“仪表板面板”。在“仪表板”中选择“新建”,在“仪表板标题”中定义仪表板的名称,此名称将生成仪表板 ID,在“面板标题”和“模型标题”中定义此搜索的名称,例如 all_events,然后单击“保存”,然后单击“查看仪表板”。
在以下屏幕中,单击右上角菜单中的“编辑”,然后在 all_events 面板中单击“选择可视化”,选择所需的可视化,在此示例中,我们选择“条形图”并单击“保存”。
现在我们有了显示所有事件的图表仪表板,请重复创建过滤器的过程,并在保存搜索时选择现有仪表板以将新面板添加到我们创建的仪表板。
创建一些面板并将其添加到现有仪表板后,我们将获得如下可视化效果
要使用将 Ansible Tower 与 Splunk 集成的更多高级功能,请参阅集合 Splunk_enterprise_security,它将允许您配置数据输入和搜索关联选项等功能。
要点和后续步骤
在本博文中,我们演示了如何将 Ansible Tower 使用情况日志发送到 Splunk,以启用 Ansible Tower 生成所有事件的集中视图。这样,我们可以从各种信息创建图表,例如失败或成功的 playbook 数量、在执行的 playbook 中最常用的模块等等。