prometheus是怎么发送告警的,alertmanager是怎么配置的?grafana是怎么权限控制的

  1. Prometheus 发送告警的方式

Prometheus 通过 Alertmanager 发送告警。当 Prometheus 规则文件中定义的条件被触发时,Prometheus 将生成告警并将其发送到 Alertmanager。Alertmanager 会将所有同类告警汇总并进行去重、分组和路由,最终发送到相应的接收端,如邮箱、Slack、PagerDuty 等。Alertmanager 的配置在 alertmanager.yml 文件中进行。

  1. Alertmanager 的配置

Alertmanager 的配置主要包括路由、接收者和模板:

  • 路由:在 Alertmanager 中定义路由规则来将不同类型的告警发送到合适的接收者。
  • 接收者:在 Alertmanager 中定义接收者来指定接收告警的方式,如电子邮件、Slack 等。
  • 模板:在 Alertmanager 中定义模板,以便对告警的格式进行自定义。

以下是一个 Alertmanager 配置文件 alertmanager.yml 的示例:

global:
  resolve_timeout: 5m
  smtp_smarthost: 'smtp.example.com:587'
  smtp_from: 'alertmanager@example.com'
  smtp_auth_username: 'alertmanager@example.com'
  smtp_auth_password: 'your-password'
  smtp_require_tls: true

route:
  receiver: 'team-X-mails'
  group_by: ['alertname', 'severity']

receivers:
- name: 'team-X-mails'
  email_configs:
  - to: 'team-X@example.com'
    headers:
      X-Custom-Header: "Hello World"
  slack_configs:
  - api_url: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
    channel: '#team-X-alerts'
    username: 'Prometheus Alertmanager'
    title: 'Prometheus Alert'
    text: '{{ range .Alerts }}{{ .Annotations.description }}\n\n{{ end }}'

templates:
- '/etc/alertmanager/template/*.tmpl'
  1. Grafana 权限控制

Grafana 通过用户和角色的方式实现权限控制。管理员可以定义多个用户和角色,并为用户分配适当的角色。角色可以指定用户对面板和数据源等对象的访问权限和编辑权限。可以分配仪表板的只读和读写权限,并可以限制用户对特定标签和时间范围的查询权限。

以下是一个 Grafana 角色的示例:

{
  "name": "Viewer",
  "description": "Role for View-Only",
  "permissions": {
    "datasources": {
      "datasource": {
        "access": 1,
        "editable": false
      }
    },
    "folders": {
      "": {
        "canSave": false,
        "canEdit": false,
        "canAdmin": false,
        "canView": true
      }
    },
    "global": {
      "admin": false,
      "users": null
    },
    "playlist": {
      "save": false,
      "load": true,
      "share": false,
      "edit": false,
      "delete": false,
      "move": false
    },
    "search": {
      "enabled": true
    },
    "temp": {
      "save": false,
      "load": true,
      "share": false,
      "edit": false,
      "delete": false,
      "move": false
    },
    "users": {
      "users": {
        "edit": false,
        "read": true,
        "create": false,
        "delete": false
      },
      "admins": {
        "edit": false,
        "read": true,
        "create": false,
        "delete": false
      },
      "editors": {
        "edit": false,
        "read": true,
        "create": false,
        "delete": false
      },
      "viewers": {
        "edit": false,
        "read": true,
        "create": false,
        "delete": false
      }
    }
  },
  "builtIn": false,
  "editable": false
}

在这个示例中,角色 Viewer 允许用户只查看仪表板,而不允许对其进行编辑操作。所有数据源都被授权,并且可以进行所有文件夹中的查看操作。限制了用户管理和创建操作的权限。可以在角色中添加更多的权限来满足其它需求。

posted @ 2023-04-22 22:37  flytoyou  阅读(234)  评论(0)    收藏  举报