kube-prometheus 系列2 初始配置

news/2024/5/18 22:21:52 标签: prometheus, kubernetes, kube-prometheus, 云原生

kube-prometheus 安装完后每个组件会都有默认配置,但是如果要满足基本的生产可用,默认配置是不够的,如数据持久化存储等。这篇文章介绍一些常见的需要初始化的配置。

  1. prometheus相关配置
 kubectl -n monitoring edit prometheuses k8s

1.1 首先需要修改的就是数据持久化存储。否则pod重启监控数据就没有了。在spec中加入storage配置(以下是以阿里云的storageClassName为例,根据实际情况配置)

  storage:
    volumeClaimTemplate:
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 20Gi
        storageClassName: alicloud-disk-efficiency
  1. Alertmanager配置
    当生产环境有告警发生,肯定要及时的接收到,以企业微信为例进行配置。
    2.1 企业微信
    #查看并导出已有配置的方法
kubectl -n monitoring get secret alertmanager-main -o "jsonpath={.data.alertmanager\.yaml}" | base64 -d

#将现有配置另存为一个文件alertmanager.yaml,在此基础上进行修改。

kubectl -n monitoring get secret alertmanager-main -o "jsonpath={.data.alertmanager\.yaml}" | base64 -d > alertmanager.yaml

#先修改alertmanager.yaml 配置,之后重新创建名为alertmanager-main 的 secret

kubectl -n monitoring delete secrets alertmanager-main 
kubectl -n monitoring create secret generic alertmanager-main --from-file ./alertmanager.yaml

配置会自动更新并生效。

下面看具体配置

先申请企业微信号,创建应用。这个另外有文章介绍。
修改alertmanager配置文件添加企业微信接口配置,告警i信息模板配置,receivers配置(先修改Default和Watchdog这两个receivers)。按上述描述的方法重建 secret alertmanager-main 使配置生效。
"global":
  "resolve_timeout": "5m"
  "wechat_api_url": "https://qyapi.weixin.qq.com/cgi-bin/"
"templates":
  - "/etc/alertmanager/template/*.tmpl"
"receivers":
- "name": "Default"
  "wechat_configs":
  - "send_resolved": true
    "api_secret": "4nEuU312Sb041212341qF6ogwb4Tkzf7fDdk"
    "corp_id": "ww21a123495b76b"
    "to_party": "1"
    "agent_id": "1000002"
    "message": '{{ template "wechat.html" . }}'
- "name": "Watchdog"
  "wechat_configs":  
  - "send_resolved": true
    "api_secret": "4nEuU312Sb041212341qF6ogwb4Tkzf7fDdk"
    "corp_id": "ww21a123495b76b"
    "to_party": "1"
    "agent_id": "1000002"
    "message": '{{ template "wechat.html" . }}' 
创建告警信息模板

#创建一个微信告警模板的configmap (如果修改了模板的内容,alertmanager并不能自动生效,虽然 configmap 能够自动加载到pod 中,但是程序本身还需要另外有机制reload 这个配置才行。)
模板文件alertmanager-wechat.tmpl内容如下

	{{ define "wechat.html" }}
	{{- if gt (len .Alerts.Firing) 0 -}}{{ range .Alerts.Firing }}
	@故障告警
	告警类型: {{ .Labels.alertname }}
	告警服务: {{ .Labels.service }}
	告警主机: {{ .Labels.instance }}
	告警信息: {{ .Annotations.summary }}
	详细信息: {{ .Annotations.description }}
	开始时间: {{ (.StartsAt.Add 28800e9).Format "2023-01-01 00:00:00" }}
	{{ end }}{{ end -}}
	{{- if gt (len .Alerts.Resolved) 0 -}}{{ range .Alerts.Resolved }}
	@故障恢复
	告警类型: {{ .Labels.alertname }}
	告警服务: {{ .Labels.service }}
	告警主机: {{ .Labels.instance }}
	告警信息: {{ .Annotations.summary }}
	详细信息: {{ .Annotations.description }}
	开始时间: {{ (.StartsAt.Add 28800e9).Format "2023-01-01 00:00:00" }}
	恢复时间: {{ (.EndsAt.Add 28800e9).Format "2023-01-01 00:00:00" }}
	{{ end }}{{ end -}}
	{{- end }}
创建模板configmap
kubectl -n monitoring create configmap alert-wechat-template --from-file alertmanager-wechat.tmpl
将模板以volume挂载到alertmanager,需要修改CRD alertmanagers
kubectl -n monitoring edit alertmanagers.monitoring.coreos.com main 
在spec中添加如下(在这个CRD中volumeMounts与volumes是并列的层级)
  volumeMounts:
  - mountPath: /etc/alertmanager/template
    name: alert-wechat-template
  volumes:
  - configMap:
      name: alert-wechat-template
    name: alert-wechat-template

#重启alertmanager pod,以加载template配置文件

kubectl -n monitoring rollout restart statefulset alertmanager-main
  1. 在Prometheus中查看已发生的告警,有些告警是由于默认配置与环境不匹配造成的,修改配置,消除这些无效告警。(例如:https://chaiyingchao.blog.csdn.net/article/details/121826573 这篇文章说到的问题)

至此基本的使用kube-prometheus监控和告警就可以正常使用了。


http://www.niftyadmin.cn/n/4943752.html

相关文章

Redis 十大数据类型

Redis数据类型都有哪些? Redis支持丰富的数据类型,那么具体在Redis7中都有哪些数据类型呢?请看下图: 官网介绍:https://redis.io/docs/data-types/。 其中,String、Hash、List、Set、Sorted Set等类型是大…

测试部门来了个00后卷王之王,老油条感叹真干不过,但是...

在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的,是技术平平&…

IO多路复用中select的TCP服务器模型和poll服务模型

select的TCP服务器模型 服务器端 #include <head.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h> #include <sys/select.h> #include <sys/time.h>#define PORT 6666 //1024~4…

不重启Docker能添加自签SSL证书镜像仓库吗?

应用背景 在企业应用Docker规划初期配置非安全镜像仓库时&#xff0c;有时会遗漏一些仓库没配置&#xff0c;但此时应用程序已经在Docker平台上部署起来了&#xff0c;体量越大就越不会让人去直接重启Docker。 那么&#xff0c;不重启Docker能添加自签SSL证书镜像仓库吗&…

Docker基础概述

目录 ​编辑 一、Docker简介 二、 Docker与虚拟机的区别 1.1namespace的六项隔离 二、Docker核心概念 2.1镜像 2.2容器 2.3仓库 三、安装Docker 3.1查看 docker 版本信息 四、Docker 镜像操作 4.1搜索镜像 4.2获取镜像 4.3镜像加速下载 4.4查看镜像信息 4.5根据…

【JS 贪心算法常见步骤】

贪心算法是一种解决优化问题的算法&#xff0c;其思想是在每一步选择中选择当前状态下最优解&#xff0c;从而达到全局最优解的目的。 以下是贪心算法的一些常见步骤&#xff1a; 将问题模型化为一个包含若干子问题的问题集合&#xff0c;每个子问题都有一个最优解。 对于每个…

JavaScript中判断两个对象是否相同的方法详解

在JavaScript开发中&#xff0c;经常会遇到需要判断两个对象是否相同的情况。对象的相等性判断涉及到深层次的属性比较&#xff0c;因此需要使用一些特定的方法来进行判断。本篇博客将详细介绍在JavaScript中判断两个对象是否相同的多种方法。 1. 使用JSON.stringify() 一种简…

Qt扫盲- Graphics View框架理论综述

Graphics View框架理论综述 一、概述二、Graphics View 体系结构1. The Scene2. The View3. 图元 Item 三、图形视图坐标系统1. 图元Item的坐标2. Scene Scene坐标3. View 视图坐标4. 坐标映射 四、关键特性1. 缩放和旋转2. 打印3. 拖放4. 鼠标指针和 提示5. 动画6. OpenGL渲染…