如何在使用 grafana 和 prometheus-operator 时配置电子邮件警报

Posted

技术标签:

【中文标题】如何在使用 grafana 和 prometheus-operator 时配置电子邮件警报【英文标题】:How to config email alert in using grafana and prometheus-operator 【发布时间】:2020-04-21 05:11:17 【问题描述】:

我通过 helm 安装了 prometheus-operator(包括 prometheus/alertmanager/grafana)。然后我通过电子邮件访问 Grafana UI 和配置警报。当我点击发送电子邮件测试时,我收到消息“SMTP 未配置,请检查您的 grafana.ini 配置文件的 [smtp] 部分”

但我不知道在这种情况下 grafana.ini 可以更改到哪里。

[root@k8s-master ~]# kubectl get pods --all-namespaces
NAMESPACE     NAME                                                      READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-5bbc8f45cb-nlqgh                  1/1     Running   1          15h
kube-system   calico-node-lk2j5                                         1/1     Running   1          15h
kube-system   calico-node-v6wzs                                         1/1     Running   1          15h
kube-system   calico-node-zfh5r                                         1/1     Running   1          15h
kube-system   coredns-5c98db65d4-79c2g                                  1/1     Running   1          15h
kube-system   coredns-5c98db65d4-bqj7g                                  1/1     Running   1          15h
kube-system   etcd-k8s-master                                           1/1     Running   1          15h
kube-system   kube-apiserver-k8s-master                                 1/1     Running   1          15h
kube-system   kube-controller-manager-k8s-master                        1/1     Running   2          15h
kube-system   kube-proxy-8qmdt                                          1/1     Running   1          15h
kube-system   kube-proxy-qwgbc                                          1/1     Running   1          15h
kube-system   kube-proxy-vhqjd                                          1/1     Running   1          15h
kube-system   kube-scheduler-k8s-master                                 1/1     Running   1          15h
monitoring    alertmanager-prometheus-operator-alertmanager-0           2/2     Running   3          15h
monitoring    prometheus-operator-grafana-64848fc9bb-dbnwc              2/2     Running   3          15h
monitoring    prometheus-operator-kube-state-metrics-5d46566c59-ck4np   1/1     Running   2          15h
monitoring    prometheus-operator-operator-64dcc7bfc-lpdj6              2/2     Running   2          15h
monitoring    prometheus-operator-prometheus-node-exporter-ns4kg        1/1     Running   1          15h
monitoring    prometheus-operator-prometheus-node-exporter-tdhwq        1/1     Running   2          15h
monitoring    prometheus-operator-prometheus-node-exporter-xt8z9        1/1     Running   2          15h
monitoring    prometheus-prometheus-operator-prometheus-0               3/3     Running   4          15h

【问题讨论】:

【参考方案1】:

感谢alertmanager.config 键,您将能够使用 helm 变量覆盖此配置。 此键将 yaml 转换为 alertmanager 的配置,因此您可以使用每个 alertmanager configuration。 您可能还应该将grafana.ini 配置更改为configure smtp 到grafana(测试似乎使用该配置)。您可以通过“服务器管理员”>“设置”在 Grafana 中检查此配置,搜索“smtp”。

作为参考,您可以对 alertmanager 执行以下操作:

    helm upgrade --install prometheus stable/prometheus-operator \
-f helm/prometheus-operator.yml \
-f helm/grafana-custom.staging.yml \
--set-string alertmanager.config.global.smtp_smarthost="my.smtp.tld:465" \
--set-string alertmanager.config.global.smtp_auth_username="my@email.tld" \
--set-string alertmanager.config.global.smtp_from="my@email.tld" \
--set-string alertmanager.config.global.smtp_auth_password="MyAmazingPassword" \
--set-string grafana.'grafana\.ini'.smtp.enabled=true \
--set-string grafana.'grafana\.ini'.smtp.host="my.smtp.tld:465" \
--set-string grafana.'grafana\.ini'.smtp.from_address="my@email.tld" \
--set-string grafana.'grafana\.ini'.smtp.user="my@email.tld" \
--set-string grafana.'grafana\.ini'.smtp.password="MyAmazingPassword"

【讨论】:

【参考方案2】:

grafana.ini 是通过 prometheus-operator helm 部署中的 configmaps 加载的。如果您已经通过 helm 安装了它,那么您只需修改 configmap,然后重新启动 grafana pod。以下是我能够使用 SMTP 的最低配置。

[smtp]
enabled = true
host = your.smtp.server.name:25
skip_verify = true
from_address = "grafana@xyz.com"
from_name = Grafana

要获取 configmap,请运行以下命令并编辑 configmap(如果 prometheus-operator 部署在非默认命名空间中,则在下面的命令中包含命名空间)。

kubectl get configmap | grep grafana

修改configmap后,重启grafana pod(不需要重启其他pod)。

注意:不推荐 Skip_verify = true。

【讨论】:

以上是关于如何在使用 grafana 和 prometheus-operator 时配置电子邮件警报的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus+Grafana监控

Zabbix+Grafana 展示示例1

Centos7 docker部署监控Prometheus+Grafana

Grafana“节点导出器已满”仪表板在导入后不显示任何数据

grafana sysdig 的最佳拟合 prometheus 度量数据模型

prometheus+grafana监控tomcat java应用