使用 Prometheus、Node Exporter 和 Grafana 监控 Red Hat Ansible Tower
使用 Prometheus、Node Exporter 和 Grafana 监控 Red Hat Ansible Tower
自动化至关重要的一环是确保其完美运行。自动化分析可以通过提供有关健康状态和组织统计信息来提供帮助。但是,通常需要监控 Ansible Tower 的当前状态。幸运的是,Ansible Tower 通过 API 提供指标,并且可以轻松地将其馈送到 Grafana 中。
这篇博文将概述如何通过使用 node_exporter 和 Prometheus 将 Ansible Tower 和操作系统指标馈送到 Grafana 来监控 Ansible Tower 环境。
为了实现这一目标,我们配置 Ansible Tower 指标以便 Prometheus 通过 Grafana 查看,并使用 node_exporter 将操作系统指标导出到 Grafana 中的操作系统 (OS) 仪表板。请注意,此处我们使用 Red Hat Enterprise Linux 8 作为运行 Ansible Tower 的操作系统。数据流如下所示
如您所见,Grafana 在 Prometheus 中查找数据。Prometheus 本身通过从 node_exporters 和 Ansible Tower API 导入数据将其收集到其数据库中。
在这篇博文中,我们假设一个包含三个 Ansible Tower 实例和一个外部数据库的集群。另请注意,这篇博文假设已安装 Prometheus 和 Grafana 实例。
node_exporter 的设置
第一步是在 Ansible Tower 服务器和外部数据库上设置 node_exporter。由于 Red Hat Enterprise Linux 8 中默认情况下不提供 node_exporter,因此我们首先必须安装它。为此,我们登录到 Ansible Tower 服务器,克隆相应的 git 存储库并切换到存储库目录。请参阅下面显示的列表以供参考
$ git clone https://github.com/redhat-cop/tower_grafana_dashboards $ cd tower_grafana_dashboards/ $ tree . ├── install_node_exporter.yaml ├── metric_servers.json └── metric_tower.json 0 directories, 3 files
接下来,我们必须执行 node_exporter 的实际安装。幸运的是,包含了一个用于安装它的 playbook。运行 install_node_exporter.yaml playbook 以执行 node_exporter 的安装。
$ ansible-playbook install_node_exporter.yaml ...
playbook 的输出如下所示
安装完成后,验证 node_exporter 是否确实正在运行并在端口 9100 上侦听。这可以使用 netstat 轻松完成
在其他 Ansible Tower 服务器以及外部数据库上重复这些步骤。
验证 Ansible Tower 指标
接下来,让我们将重点转向 Ansible Tower。通过访问以下 URL 验证 Ansible Tower 指标是否正确显示
https://tower.customer.com/api/v2/metrics
访问 URL 后,我们应该会看到所有可用 Ansible Tower 指标的列表,如下所示
让我们设置 Prometheus 以收集这些数据。首先,我们需要在 Ansible Tower 上生成一个 身份验证令牌:该令牌将授予对 Ansible Tower 的访问权限,而无需每次访问时都输入用户名和密码。
要生成令牌,请访问 Ansible Tower 控制台并单击页面顶部出现的用户名。从那里,单击“令牌”,然后单击“+”号。将弹出一个新窗口,您可以在其中定义令牌的详细信息并最终创建它,请参见下图。选择“读取”范围,然后单击绿色的“保存”按钮。
设置 Prometheus 以接收指标
有了令牌,我们现在可以配置 Prometheus,添加 node_exporters 抓取配置和 Ansible Tower 指标的抓取。使用您选择的编辑器打开 Prometheus 安装的配置:
$ vim /etc/prometheus/prometheus.yml
接下来,添加 Ansible Tower 和操作系统的配置。下面是一个示例
## Scrape Config - Tower - job_name: 'tower' metrics_path: /api/v2/metrics scrape_interval: 5s scheme: https bearer_token: xxxxxxxxxxxxxxxx (your bearer token) static_configs: - targets: - tower.customer.com ## Add Node Exporter - job_name: 'tower-01' scrape_interval: 5s static_configs: - targets: ['172.31.66.203:9100'] - job_name: 'tower-02' scrape_interval: 5s static_configs: - targets: ['172.31.65.135:9100'] - job_name: 'tower-db-01' scrape_interval: 5s static_configs: - targets: ['172.31.64.218:9100']
请注意,Ansible Tower 的指标仅收集一次,而操作系统的指标则为每个服务器收集:Ansible Tower 有助于确保所有内部指标都已收集并在集群的所有已安装服务器之间共享。但每个服务器上的每个操作系统都是独立的,因此具有独立的操作系统指标。
重新启动 Prometheus 以应用更改
$ systemctl restart prometheus
现在,访问 URL http://prometheus.customer.com/targets 以验证数据是否已正确抓取。确保所有端点都处于“UP”状态,如下所示
Grafana 配置以导入仪表板
现在让我们将仪表板导入 Grafana。Grafana 可以通过 json 文件进行配置。在上面提到的存储库中,我们提供了两个 json 文件来配置两个仪表板:metric_servers.json 用于 OS 指标,metric_tower.json 用于 Ansible Tower 指标。让我们将它们导入 Grafana 以启用仪表板。
为此,请访问您的 Grafana 安装并单击左侧导航菜单中的“+”号。选择“文件夹”,输入所需的名称并创建它。
之后,我们可以选择“管理仪表板”,从那里我们可以通过上传导入准备好的 json 文件。选择 json 文件 metric_tower.json,选择刚刚创建的文件夹,更改 uid 并选择 Prometheus 作为数据源,如下所示
通过按下相应的按钮启动导入。在 metric_tower.json 导入完成后,我们对 metric_servers.json 文件重复相同的过程。
新的 Grafana 仪表板
这两个上传完成后,我们可以查看导入的仪表板
在此 Ansible Tower 指标仪表板中,您现在可以看到以下信息
- Ansible Tower 版本
- Ansible Automation Platform 版本
- Tower 节点数
- 许可证中可用的主机数
- 已使用的主机数
- 用户总数
- 作业成功数
- 作业失败数
- 按作业执行类型分类的数量
- 显示正在运行的作业数和挂起作业数的图形
- 显示工具增长的图形,显示工作流、主机、清单、作业、项目、组织等的数量
在操作系统指标仪表板中,我们有以下信息
- 正常运行时间
- vCPU 总数
- 内存总数
- CPU iowait
- 内存使用情况
- CPU 繁忙率
- 交换空间
- 文件系统使用情况
- 磁盘 IOPS
- 系统负载
- 已用空间图
- 显示磁盘写入和读取、网络流量和网络套接字的图形。
要点和后续步骤
在这篇文章中,我们演示了如何使用 node_exporter 导出 OS 的指标以及 Prometheus 收集 Ansible Tower api 的指标来创建 Ansible Tower 环境的监控,我们包含了 OS 使用情况仪表板和 Ansible Tower 指标,以便您可以更全面地管理您的环境,例如容量、许可证和正在执行的作业,使用图形和计数器,您可以快速识别问题并采取措施。
如果您有兴趣查看整个自动化环境的详细信息,您也可以在 cloud.redhat.com 上尝试自动化分析。