进阶之路:从零到一在k8s上部署高可用prometheus —— alertmanager
目录导航前言相关yaml文件权限相关alertmanager-serviceAccount.yaml配置相关alertmanager-secret.yaml服务相关alertmanager-service.yamlprometheus.yaml部署验证导航进阶之路:从零到一在k8s上部署高可用prometheus —— 总览前言在上一章部署完监控基础组件prometheus后,我们应该已经可以采集
目录
导航
进阶之路:从零到一在k8s上部署高可用prometheus —— 总览
进阶之路:从零到一在k8s上部署高可用prometheus —— 准备工作
进阶之路:从零到一在k8s上部署高可用prometheus —— exporter
进阶之路:从零到一在k8s上部署高可用prometheus —— consul
进阶之路:从零到一在k8s上部署高可用prometheus —— prometheus-operator
进阶之路:从零到一在k8s上部署高可用prometheus —— prometheus
进阶之路:从零到一在k8s上部署高可用prometheus —— alertmanager
进阶之路:从零到一在k8s上部署高可用prometheus —— minio
进阶之路:从零到一在k8s上部署高可用prometheus —— thanos receive、thanos query
前言
在上一章部署完监控基础组件prometheus
后,我们应该已经可以采集到node_exporter暴露出的监控数据了。但是仅仅有数据是不够的,我们需要将数据转化为可以利用的资源,常见的监控数据应用方向有两个 —— 监控可视化
和告警
。本章主要讲述如何通过alertmanager
以告警的方式利用监控数据。
技术支持
有的小伙伴在按照文章操作时遇到了各种各样奇奇怪怪的问题,私信上解决问题的效率又比较低。大家可以试试用AI解决自己的问题,既学到了新东西又解决了问题美滋滋~目前我用下来最好用的还是GPT,3.5模型足以解决各类编程问题了,但是使用有一定门槛(魔法上网+海外支付)。如果没有条件的小伙伴可以试试这个,送的100次对话足够解决问题了。
相关yaml文件
权限相关
alertmanager-serviceAccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: alertmanager-ifcloud
配置相关
alertmanager-secret.yaml
# 由于我没有准备用于接收告警的webhook,这里只放了一个官方示例,并没有任何实际用途,实际使用请参考:https://prometheus.io/docs/alerting/latest/alertmanager/
apiVersion: v1
kind: Secret
metadata:
name: alertmanager-ifcloud
stringData:
alertmanager.yaml: |-
"global":
"resolve_timeout": "5m"
"inhibit_rules":
- "equal":
- "namespace"
- "alertname"
"source_match":
"severity": "critical"
"target_match_re":
"severity": "warning|info"
- "equal":
- "namespace"
- "alertname"
"source_match":
"severity": "warning"
"target_match_re":
"severity": "info"
"receivers":
- "name": "Default"
- "name": "Watchdog"
- "name": "Critical"
"route":
"group_by":
- "namespace"
"group_interval": "5m"
"group_wait": "30s"
"receiver": "Default"
"repeat_interval": "12h"
"routes":
- "match":
"alertname": "Watchdog"
"receiver": "Watchdog"
- "match":
"severity": "critical"
"receiver": "Critical"
type: Opaque
服务相关
alertmanager-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
alertmanager: ifcloud
name: alertmanager-ifcloud
spec:
ports:
- name: web
port: 9093
targetPort: web
selector:
alertmanager: ifcloud
app: alertmanager
sessionAffinity: ClientIP
alertmanager-service-web.yaml
kind: Service
apiVersion: v1
metadata:
name: alertmanager-ifcloud-web
labels:
app: alertmanager-ifcloud-web
spec:
ports:
- name: http-web
protocol: TCP
port: 9093
targetPort: 9093
nodePort: 30004
selector:
alertmanager: ifcloud
app: alertmanager
type: NodePort
sessionAffinity: None
alertmanager.yaml
apiVersion: monitoring.coreos.com/v1
kind: Alertmanager #prometheus-operator提供的crd
metadata:
labels:
alertmanager: ifcloud
name: ifcloud
spec:
image: quay.io/prometheus/alertmanager:v0.21.0
nodeSelector:
kubernetes.io/os: linux
replicas: 3
securityContext:
fsGroup: 2000
runAsNonRoot: true
runAsUser: 1000
serviceAccountName: alertmanager-ifcloud
version: v0.21.0
部署
# 将以上文件放在目录/yaml/alertmanager下
# 执行以下命令验证yaml文件正确性
kubectl apply -f /yaml/alertmanager -n prom-ha --dry-run=client
# 验证无误后执行以下命令创建相关k8s资源
kubectl apply -f /yaml/alertmanager -n prom-ha
验证
部署完成后访问http://192.168.25.80:30004/#/alerts,等待一段时间后我们应该可以看到上章配置的prometheusRule触发的告警。
更多推荐
所有评论(0)