coopdevs.monitoring_role
监控角色 
一个用于维护 Grafana 生态系统监控工具的 Ansible 角色。
使用 Docker 安装 Prometheus 和 Loki 导出器:
nodeexporter
:Prometheus 导出器,收集有关主机状态的一般数据。postgresexporter
:Prometheus 导出器,监控 PostgreSQL 服务器的状态。promtail
:Loki 的主要导出器,类似于 Prometheus 的日志服务器,并与 Grafana 兼容。
此角色支持一些应用程序及其默认日志格式:
此外,它还支持一个 自定义导出器,用于显示系统中的活跃用户。
使用此角色
公共变量
NodeExporter
# defaults/main.yaml
monitoring_nexporter_enabled: true
monitoring_nexporter_host: 127.0.0.1
monitoring_nexporter_port: 9100
monitoring_nexporter_docker_bind: "127.0.0.1:127.0.0.1:9100"
monitoring_nexporter_container_name: nexporter
monitoring_nexporter_image_version: latest
PostgresqlExporter
monitoring_postgres_exporter_enabled: true
monitoring_postgres_exporter_pg_user: "monitor_user"
Promtail
# defaults/main.yaml
monitoring_promtail_enabled: true
monitoring_promtail_host: 127.0.0.1
monitoring_promtail_port: 9080
monitoring_promtail_docker_bind: "127.0.0.1:127.0.0.1:9080"
monitoring_promtail_container_name: promtail
monitoring_promtail_image_version: latest
monitoring_promtail_modules_enabled:
- "app2"
monitoring_promtail_modules_available:
app1:
log_path: "/var/log/app1/error.log"
template: "app1.j2"
app2:
log_path: "/opt/app2/log/app2.log"
template: "app2.j2"
monitoring_promtail_config_dir: "/etc/promtail"
monitoring_promtail_config_filename: "config.yml"
活跃用户
monitoring_users_enabled: true
monitoring_users_host: 127.0.0.1
monitoring_users_port: 9839
monitoring_users_endpoint: "/metrics"
monitoring_users_prefix: "what"
monitoring_users_with_timestamp: false
monitoring_users_scrape_interval: 5000
秘密变量
Promtail
monitoring_loki_user: "1234"
monitoring_loki_key: "eyJrIjoiM2VlZmM2NmQ4ZTQ4ZmE3MDRmZDBmMGE0YzNlNTE1MzRjZDdjNDY0N2YiLCJuIjoieW91ciBncmFmYW5hIGNsb3VkIGtleSIsImlkIjoxMjM0NTZ9"
monitoring_loki_hostname: "logs-somewhere.grafana.net"
PostgresqlExporter
monitoring_postgres_exporter_pg_password: "3%hyZ&toNZ#Xn74"
monitoring_postgres_exporter_pg_port: "3456"
示例剧本
Odoo 与 promtail
# playbooks/odoo-promtail.yml
---
- name: 安装带有日志监控的 Odoo
hosts: servers
become: yes
roles:
- role: coopdevs.odoo_role
- role: coopdevs.monitoring_role
vars:
monitoring_nexporter_enabled: false
monitoring_promtail_enabled: true
monitoring_promtail_modules_enabled: [ "odoo" ]
monitoring_loki_user: "1234"
monitoring_loki_key: "eyJrIjoiM2VlZmM2NmQ4ZTQ4ZmE3MDRmZDBmMGE0YzNlNTE1MzRjZDdjNDY0N2YiLCJuIjoieW91ciBncmFmYW5hIGNsb3VkIGtleSIsImlkIjoxMjM0NTZ9"
monitoring_loki_hostname: "logs-somewhere.grafana.net"
PostgreSQL 与系统指标
# playbooks/postgres-nexporter.yml
---
- name: 安装带有系统指标的数据库服务器
hosts: servers
become: yes
roles:
- role: geerlingguy.postgresql
- role: coopdevs.monitoring_role
vars:
monitoring_nexporter_enabled: true
monitoring_promtail_enabled: false
安全性
此角色通过 HTTP 服务器暴露了大量可能被利用的数据。默认情况下,它监听的是一个回环地址,外部网络无法访问。
然而,您可能希望外部 Prometheus 服务器定期获取这些数据。为此,并保护数据,需要某种形式的认证,使 Prometheus 服务器可以访问主机。
一种方法是将导出器绑定到 localhost,然后在它们之前设置一个带有基本认证的反向代理,使用 Nginx。本角色并不负责设置和管理此配置及相关密钥。
扩展
一个 Prometheus 导出器
要添加新的 Prometheus 导出器:
- 从 Node Exporter 复制
defaults/main.yml
部分到同一文件,并将所有nexporter
术语替换为您自己的,比如someexporter
。 - 复制 Node Exporter 的
templates/monitoring-docker-compose.yml.j2
部分,再次重命名并根据您的需求进行调整。 - 更新
meta/main.yml
:添加标签,如果需要更改描述。 - 更新
README.md
为新应用添加 Promtail 模块
要为尚不支持的应用添加兼容性,请执行以下操作:
- 在
monitoring_promtail_modules_available
中声明它。日志路径取决于应用程序,模板名称由您决定。 - 将
templates/promtail-config-apps/odoo-role.j2
复制到同一目录,但文件名为new-app.j2
。 - 根据您的应用编辑模板。请查看 官方文档。
- 您可以在 regexr 的“服务器模式”或 regex101.com 上测试正则表达式。 包含一条带有几个日志条目的注释,以便于理解,将帮助未来的正则表达式阅读者。
- 设置
labels
阶段,以定义哪些标签将导出到 Loki,所有收集的标签中。 - 设置
timestamp
阶段,以实际时间戳标记日志行,而不是 promtail 抓取的时间。- 仅在可能的情况下包含毫秒。Golang 只理解点 '.' 作为小数分隔符。如果您的应用使用 ',' 则不行。 参见 golang 的问题 #6189。
- 通过解析或手动方式包括时区,如
backups-role.j2
或odoo-role.j2
。
- 可选地,如果您希望丢弃不匹配的条目,可以包含一个
match
阶段。
关于项目
Install Prometheus and Loki exporters to monitor your project instances
安装
ansible-galaxy install coopdevs.monitoring_role
许可证
Unknown
下载
22.4k
拥有者
Coopdevs, Free and Open Source Software for Social and Solidarity Economy.