k8s 1.23.1 部署 prometheus 钉钉推送 自定义监控配置 promql基础语法

2023-05-16

  1. k8s环境安装:
    https://blog.csdn.net/weixin_43606975/article/details/119947061?spm=1001.2014.3001.5502

  2. 部署prometheus-v0.10.0
    下载地址:
    https://github.com/prometheus-operator/kube-prometheus/tags

在这里插入图片描述
3. 上传到服务器

tar -xf v0.10.0.tar.gz

4.修改replicas为1不然机器没有那么大的资源

cd  /home/k8s/kube-prometheus-0.10.0/manifests
grep  -r "replicas: 2" *
grep  -r "replicas: 3" *

5.增加service的nodeport

vim alertmanager-service.yaml

在这里插入图片描述

vim prometheus-service.yaml

在这里插入图片描述

vim grafana-service.yaml

在这里插入图片描述
6.启动

kubectl  create -f   /home/k8s/kube-prometheus-0.10.0/manifests/setup/
kubectl  apply -f /home/k8s/kube-prometheus-0.10.0/manifests/

7.因为pod镜像无法拉取下来,所以一直报错。修改镜像

docker tag bitnami/kube-state-metrics:latest   k8s.qcr.io/kube-state-metrics/kube-state-metrics:v2.3.0  
#其它一样

在这里插入图片描述

7.访问几个nodeport的端口 Grafana admin/admin
在这里插入图片描述

8.promql基本语法
在这里插入图片描述

在这里插入图片描述
9.安装钉钉报警,自定义监控

cat dingtalk-config.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: dingtalk-config
  namespace: prometheus
data:
  config.yml: |-
    templates:
      - /etc/prometheus-webhook-dingtalk/template.tmpl
    targets:
      webhook:
        url: https://oapi.dingtalk.com/robot/send?access_token=b5b550b72447d935572d5c717cd1ec4bed7f17cc82efaa
        secret: SECcbc9fe62f53d9a533d5e506f30722e0a1a39b36bd0b8e24
        mention:
          all: true #@所有人
      webhook2:
        url: https://oapi.dingtalk.com/robot/send?access_token=4df2745e8df1de6d0429e35caf15e03
        secret: SECe079af795abd316a7e1f431ee8ebcf082cc0b0611a859da

  template.tmpl: |-
    {{ define "__subject" }}[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}] {{ .GroupLabels.SortedPairs.Values | join " " }} {{ if gt (len .CommonLabels) (len .GroupLabels) }}({{ with .CommonLabels.Remove .GroupLabels.Names }}{{ .Values | join " " }}{{ end }}){{ end }}{{ end }}
    {{ define "__alertmanagerURL" }}{{ .ExternalURL }}/#/alerts?receiver={{ .Receiver }}{{ end }}

    {{ define "__text_alert_list" }}{{ range . }}
    **Labels**
    {{ range .Labels.SortedPairs }} - {{ .Name }}: {{ .Value | markdown | html }}
    {{ end }}
    **Annotations**
    {{ range .Annotations.SortedPairs }} - {{ .Name }}: {{ .Value | markdown | html }}
    {{ end }}
    **Source:** [{{ .GeneratorURL }}]({{ .GeneratorURL }})
    {{ end }}{{ end }}

    {{ define "default.__text_alert_list" }}{{ range . }}
    ---
    **告警级别:** {{ .Labels.severity | upper }}

    **运营团队:** {{ .Labels.team | upper }}

    **触发时间:** {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}

    **事件信息:**
    {{ range .Annotations.SortedPairs }} - {{ .Name }}: {{ .Value | markdown | html }}


    {{ end }}

    **事件标签:**
    {{ range .Labels.SortedPairs }}{{ if and (ne (.Name) "severity") (ne (.Name) "summary") (ne (.Name) "team") }} - {{ .Name }}: {{ .Value | markdown | html }}
    {{ end }}{{ end }}
    {{ end }}
    {{ end }}
    {{ define "default.__text_alertresovle_list" }}{{ range . }}
    ---
    **告警级别:** {{ .Labels.severity | upper }}

    **运营团队:** {{ .Labels.team | upper }}

    **触发时间:** {{ dateInZone "2006.01.02 15:04:05" (.StartsAt) "Asia/Shanghai" }}

    **结束时间:** {{ dateInZone "2006.01.02 15:04:05" (.EndsAt) "Asia/Shanghai" }}

    **事件信息:**
    {{ range .Annotations.SortedPairs }} - {{ .Name }}: {{ .Value | markdown | html }}


    {{ end }}

    **事件标签:**
    {{ range .Labels.SortedPairs }}{{ if and (ne (.Name) "severity") (ne (.Name) "summary") (ne (.Name) "team") }} - {{ .Name }}: {{ .Value | markdown | html }}
    {{ end }}{{ end }}
    {{ end }}
    {{ end }}

    {{/* Default */}}
    {{ define "default.title" }}{{ template "__subject" . }}{{ end }}
    {{ define "default.content" }}#### \[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}\] **[{{ index .GroupLabels "alertname" }}]({{ template "__alertmanagerURL" . }})**
    {{ if gt (len .Alerts.Firing) 0 -}}

    {{ template "default.__text_alert_list" .Alerts.Firing }}


    {{- end }}

    {{ if gt (len .Alerts.Resolved) 0 -}}
    {{ template "default.__text_alertresovle_list" .Alerts.Resolved }}


    {{- end }}
    {{- end }}

    {{/* Legacy */}}
    {{ define "legacy.title" }}{{ template "__subject" . }}{{ end }}
    {{ define "legacy.content" }}#### \[{{ .Status | toUpper }}{{ if eq .Status "firing" }}:{{ .Alerts.Firing | len }}{{ end }}\] **[{{ index .GroupLabels "alertname" }}]({{ template "__alertmanagerURL" . }})**
    {{ template "__text_alert_list" .Alerts.Firing }}
    {{- end }}

    {{/* Following names for compatibility */}}
    {{ define "ding.link.title" }}{{ template "default.title" . }}{{ end }}
    {{ define "ding.link.content" }}{{ template "default.content" . }}{{ end }}


cat dingtalk-deployment.yaml
apiVersion: v1
kind: Service
metadata:
  name: dingtalk
  namespace: monitoring
  labels:
    app: dingtalk
  annotations:
    prometheus.io/scrape: 'false'
spec:
  selector:
    app: dingtalk
  ports:
  - name: dingtalk
    port: 8060
    protocol: TCP
    targetPort: 8060
 
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dingtalk
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dingtalk
  template:
    metadata:
      name: dingtalk
      labels:
        app: dingtalk
    spec:
      containers:
      - name: dingtalk
        image: timonwong/prometheus-webhook-dingtalk:latest
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8060
        volumeMounts:
        - name: config
          mountPath: /etc/prometheus-webhook-dingtalk
      volumes:
      - name: config
        configMap:
          name: dingtalk-config

10.启动

kubectl apply -f dingtalk-config.yaml -f dingtalk-deployment.yaml
kubectl get pod -n monitoring

在这里插入图片描述
11.配置alertmanager-secret

#cat  alertmanager-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  labels:
    app.kubernetes.io/component: alert-router
    app.kubernetes.io/instance: main
    app.kubernetes.io/name: alertmanager
    app.kubernetes.io/part-of: kube-prometheus
    app.kubernetes.io/version: 0.23.0
  name: alertmanager-main
  namespace: monitoring
stringData:
  alertmanager.yaml: |-
    "global":
      "resolve_timeout": "5m"
    "receivers":
    - "name": "Webhook"
      "webhook_configs":
      - "url": "http://dingtalk.monitoring.svc.cluster.local:8060/dingtalk/webhook/send"
    "route":
      "group_by":
      - "namespace"
      "group_wait": "30s"  #组告警等待时间,也就是告警产生后等待30s,如果有同一组告警一起发出
      "receiver": "Webhook"
      "repeat_interval": "2m" #重复告警的间隔时间,减少报警发送频率
      "routes":
      - "matchers":
        - "alertname = Webhook"
        "receiver": "Webhook"
type: Opaque

12.启动

kubectl apply -f alertmanager-secret.yaml

可以去pod里面看看配置是否刷上去了

13.自定义监控模板

/home/k8s/kube-prometheus-0.10.0/manifests
vim nodeExporter-prometheusRule.yaml
...
    - alert: demon-pod
      annotations:
        description: filed  demon-pod < 2
      expr: sum(node_namespace_pod:kube_pod_info:{namespace="demon"}) < 2
      for: 2m
      labels:
        team: pods
        severity: critical
    - alert: Node内存可用大小10兆
      expr: node_memory_MemFree_bytes > 10
      for: 2m
      labels:
        severity: critical
        team: pods
      annotations:
        description: 容器可用内存小于100k

...

在这里插入图片描述
在这里插入图片描述
意思是demon名称空间下,有2个pod如果小于2个就触发报警。

新增文件

在这里插入图片描述
14.更新

kubectl  apply -f nodeExporter-prometheusRule.yaml

在这里插入图片描述
进pod看配置是否刷进去了

15.在Prometheus上查看是否有报警
在这里插入图片描述
你可以去停止一个demon的pod然后触发报警,看钉钉是否有消息推送。
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s 1.23.1 部署 prometheus 钉钉推送 自定义监控配置 promql基础语法 的相关文章

随机推荐

  • STM32--数码管显示使用

    STM32 数码管显示 简介 1 硬件部分 STM32F103C8T6 最小系统板 一位共阴数码管 2 软件部分 Keil软件编程 数码管码表 硬件部分 数码管 简介 数码管 xff0c 也称作辉光管 xff0c 是一种可以显示数字和其他信
  • LXC 和 LXD 容器总结

    1 概述 1 1 LXC LXC是Linux Containers的缩写 它是一种虚拟化技术 xff0c 通过一个Linux内核在一个受控主机上虚拟地运行多个Linux系统 LXC使用内核的Cgroups功能 xff0c 来提供进程和网络空
  • Altium designer -- 基本规则设置--间距设置Clearance

    Altium designer 基本规则设置 xff08 1 xff09 间距设置Clearance 硬件设计 软件 Altium designer 10PCB设计 间距设置 规则名称1 xff1a Clearance 一般间距 最小间距
  • Python 百度智能云文字识别 实现手写文字识别

    Python 实现手写文字识别 简介 百度智能云人工智能平台文字识别接口使用下载IP摄像头应用 调用手机摄像头 xff0c 实现拍照实现文字识别 Python 百度智能云人工智能文字识别接口 实现手写文字识别 百度智能云 创建应用 创建Py
  • Python 天气 简单 数据分析及可视化

    Python 天气情况数据分析及可视化 环境配置 Pycharm开发环境 python 版本 python3 7 Anconda 集成开发环境 第三方库导入 span class token comment pip install 模块 清
  • STM32 BMP280模块 获取气压温度高度传感器数据 TFT显示

    STM32 BMP280模块 获取气压温度高度传感器数据 TFT显示 简介 BMP280是博世最新推出的数字气压传感器 xff0c 具有卓越的性能和低廉的价格 xff0c 相对精度为 0 12 hPa xff08 相当于 1米 xff09
  • 51单片机学习 光敏电阻传感器实验

    51单片机学习 光敏电阻传感器实验 一 光敏电阻模块简介 光敏电阻传感器模块是对光线敏感度的反应 xff0c 一般用来检测探头周围光线的强度 xff08 亮度 xff09 xff0c 可以通过DO输出数字信号1和0 xff0c 也可以通过A
  • 基于STM32的物联网环境监测系统

    基于STM32的物联网环境监测系统 xff08 Internet of Things environmental monitoring system based on STM32 xff09 基于机智云物联网的环境监测系统 视频演示 摘 要
  • 合宙ESP32S3 CameraWebServe 测试demo

    合宙ESP32S3 CameraWebServe 合宙ESP32S3 CameraWebServe测试 xff0c 我们需要一个OV2640的摄像头模组用来采集图像传输给ESP32的 xff0c 这里使用的OV2640是之前安信可十周年的白
  • 【学习笔记汇总】OpenStudyNote

    OpenStudyNote https imgse com i ppE5FpQ 本科毕业设计 Internet of Things environmental monitoring system based on STM32 STM32系列
  • 计算机视觉:场景识别(Scene Recognition)

    计算机视觉 xff1a 场景识别 xff08 Scene Recognition xff09 场景识别图像分类特征提取词袋模型集成学习分类器 算法设计结果分析总结与展望总结展望 完整程序请移步至此链接下载 场景识别 在这个项目中 xff0c
  • ROS学习笔记(六):TF坐标变换

    ROS学习笔记 xff08 六 xff09 xff1a TF坐标变换 TF的基本知识TF工具tf monitortf echostatic transform publisherview framesrqt tf tree 各坐标系及其关系
  • String, Int 和 Byte数组

    1 Bytes amp String 1 1 Bytes 61 gt String Python byte array span class token operator 61 span span class token builtin b
  • 嵌入式如何学习与职业规划

    前言 xff1a 本笔记为百问网7天物联网智能家居训练营学习总结 如何学习与职业规划 仔细观察一下周围的电子设备 xff0c 比如包里的手机 xff0c 戴着的手环 xff0c 开着的空调 家里的洗衣机 扫地机器 人 监控摄像头 智能电视
  • 逻辑盘(lvm)扩容

    1 已经创建lvm 2 扩容 目的 xff1a 把sdb容量扩给 目录 2 1 xff1a dev sdb 分区格式化 span class token function fdisk span dev sdb 命令 span class t
  • 整一篇整一篇,python3实现自动重启路由器的上的花生壳(selenium)

    python3实现自动重启路由器的上的花生壳 xff08 selenium xff09 需求介绍 xff1a 我路由器上绑定的花生壳总是失效 xff0c 解决办法是重启动一下就正常了 所以使用python3的selenium来实现 xff0
  • 运维面试题库收集

    运维面试题库收集 mysql主从同步原理 主库 打开binlog日志 xff0c 每当有从库连接到主库的时候 xff0c 主库都会创建一个线程然后发送binlog内容到从库 对于每一个即将发送给从库的sql事件 xff0c binlog输出
  • Ubuntu 20.04 安装Arkime流量分析工具

    Ubuntu 20 04 安装Arkime流量分析工具 1 安装ES span class token hvariable apt span span class token operator span span class token h
  • 数据误删除,恢复工具之R-STUDIO

    数据误删除恢复 下载地址 xff1a https download csdn net download weixin 43606975 85475091 打开软件工具R STUDIO如图 xff1a 找到对应的硬盘分区 xff0c 点击2次
  • k8s 1.23.1 部署 prometheus 钉钉推送 自定义监控配置 promql基础语法

    k8s环境安装 xff1a https blog csdn net weixin 43606975 article details 119947061 spm 61 1001 2014 3001 5502 部署prometheus v0 1