监控管理
启用监控后,您可以通过 LLMOS Management > Monitoring 管理额外的 Prometheus 规则、告警以及访问仪表盘。
监控管理
- 配置 (Config):查看并更新 LLMOS 监控设置。
- Prometheus 图表:访问 Prometheus 指标和图表。
- Grafana:探索 Grafana 仪表盘。
- Alertmanager:查看并管理告警配置。
ServiceMonitor 和 PodMonitor
ServiceMonitors
和 PodMonitors
是 Prometheus Operator 创建的自定义资源,用于定义 Prometheus 如何从端点收集指标。这些配置确保 Prometheus 知道从哪里抓取数据。
- ServiceMonitors:适用于大多数使用场景,常用于抓取服务端点的指标。
- PodMonitors:用于特定的 Pod 级别抓取需求。
更多详情:
PrometheusRules
PrometheusRules
允许您定义规则以生成告警或预计算指标。这些规则会被定期评估。
- 记录规则 (Recording Rules):通过组合或转换现有指标创建新指标。适用于预计算复杂查询。
- 告警规则 (Alerting Rules):运行查询以检查特定条件。如果查询返回非零值,则触发告警。
更多示例请参考 Prometheus Rules 文档。
Alertmanager 配置
Alertmanager
处理由 Prometheus 发送的告警,执行以下任务:
- 去重:移除重复告警。
- 分组:按相似特征组织告警。
- 路由:将告警发送到合适的渠道,例如邮件、Slack 或 Webhook。
- 静默:临时禁用告警。
- 跟踪:监控告警的状态(触发或已解决)。
创建 AlertmanagerConfig 资源
要在 Alertmanager 中设置告警接收器和路由:
- 前往 LLMOS Management > Monitoring > AlertmanagerConfigs。
- 点击 Create,填写名称和命名空间。
- 保存配置。
- 打开创建的配置,点击 Add Receiver:
- 给接收器命名。
- 选择通知类型(如 Slack、邮件)。
- 填写必需字段(如 Slack 的
api_url
和channel
)。
- 点击 Route 标签,添加接收器并设置路由配置到 AlertmanagerConfig。
- 保存 AlertmanagerConfig。
结果: 当触发告警时,告警会发送到指定的接收器。
备注
对于一级路由,Prometheus Operator 会自动添加一个默认匹配器:namespace: <AlertmanagerConfig namespace>
。该匹配器确保告警根据 AlertmanagerConfig
的命名空间进行路由。
对于不同命名空间的告警,您可以通过以下两种方式处理告警:
-
为每个命名空间创建一个 AlertmanagerConfig
- 这种方式允许每个命名空间独立管理其告警。告警会路由到相应命名空间的配置。
-
使用子路由集中处理所有告警
- 如果您更倾向于集中管理告警,可以在单个
AlertmanagerConfig
的 YAML 文件中配置子路由。子路由可以基于特定匹配器或标签条件处理来自多个命名空间的告警。
- 如果您更倾向于集中管理告警,可以在单个
选择与您的操作和组织需求最匹配的方法。
AlertmanagerConfig YAML 示例
以下是一个使用 Slack 的 AlertmanagerConfig
资源示例:
apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
labels:
llmos.ai/alertmanagerconfig: "true"
name: config-example
namespace: llmos-monitoring-system
spec:
receivers:
- name: llmos-slack
slackConfigs:
- apiURL:
key: api_url # custom key name
name: $slack-secret # your secret name that contains the slack api_url
channel: '#alarm-test'
httpConfig: {}
sendResolved: true
text: |-
{{ define "cluster" }}{{ .ExternalURL | reReplaceAll ".*alertmanager\\.(.*)" "$1" }}{{ end }}
{{ define "slack.myorg.text" }}
{{- $root := . -}}
{{ range .Alerts }}
*Alert:* {{ .Annotations.summary }} - `{{ .Labels.severity }}`
*Cluster:* {{ template "cluster" $root }}
*Description:* {{ .Annotations.description }}
*Graph:* <{{ .GeneratorURL }}|:chart_with_upwards_trend:>
*Runbook:* <{{ .Annotations.runbook_url }}|:spiral_note_pad:>
*Details:*
{{ range .Labels.SortedPairs }} - *{{ .Name }}:* `{{ .Value }}`
{{ end }}
{{ end }}
{{ end }}
route:
groupInterval: 5m
groupWait: 30s
receiver: llmos-slack
repeatInterval: 4h
接收器配置
接收器决定通知的发送位置。它们可以是原生(如 Slack、邮件)或自定义(如使用 Webhook)的方式。
UI 支持的接收器
- Slack:需要 Webhook URL 和频道名称。
- Email:需要 SMTP 服务器详情和收件人地址。
- PagerDuty:需要集成密钥。
- Opsgenie:需要 API 密钥和响应者详细信息。
- Webhook:支持通用 Webhook URL。
- Custom:对于不受支持的系统,可以使用 YAML 手动配置。
更多关于每种接收器配置的详细信息,请参考 Prometheus 的接收器集成设置。