coopdevs.monitoring_role

监控角色 Ansible 角色

一个用于维护 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 导出器:

  1. 从 Node Exporter 复制 defaults/main.yml 部分到同一文件,并将所有 nexporter 术语替换为您自己的,比如 someexporter
  2. 复制 Node Exporter 的 templates/monitoring-docker-compose.yml.j2 部分,再次重命名并根据您的需求进行调整。
  3. 更新 meta/main.yml:添加标签,如果需要更改描述。
  4. 更新 README.md

为新应用添加 Promtail 模块

要为尚不支持的应用添加兼容性,请执行以下操作:

  1. monitoring_promtail_modules_available 中声明它。日志路径取决于应用程序,模板名称由您决定。
  2. templates/promtail-config-apps/odoo-role.j2 复制到同一目录,但文件名为 new-app.j2
  3. 根据您的应用编辑模板。请查看 官方文档
    • 您可以在 regexr 的“服务器模式”或 regex101.com 上测试正则表达式。 包含一条带有几个日志条目的注释,以便于理解,将帮助未来的正则表达式阅读者。
    • 设置 labels 阶段,以定义哪些标签将导出到 Loki,所有收集的标签中。
    • 设置 timestamp 阶段,以实际时间戳标记日志行,而不是 promtail 抓取的时间。
      • 仅在可能的情况下包含毫秒。Golang 只理解点 '.' 作为小数分隔符。如果您的应用使用 ',' 则不行。 参见 golang 的问题 #6189
      • 通过解析或手动方式包括时区,如 backups-role.j2odoo-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.