【Prometheus】Prometheus的监控告警

news/2024/5/18 21:27:18 标签: prometheus

一、Prometheus的监控告警:

1、监控告警:

alert是一个单独的模块,需要我们单独的配置

需要声明邮箱地址。配置是以configmap进行配置的

alertmanager也是pod部署,部署在K8S集群中

2、创建alert文件,配置告警发送方式

vim alert-cfg.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: alertmanager
  namespace: monitor-sa
data:
  alertmanager.yml: |-
    global:
      resolve_timeout: 1m
#定义告警项发送邮件的超时时间。默认15秒
      smtp_smarthost: 'smtp.qq.com:25'
      smtp_from: '1654129473@qq.com'
      smtp_auth_username: '1654129473@qq.com'
      smtp_auth_password: 'sjhdrdrcrwinbjjj'
      smtp_require_tls: false
    route:
#设置告警的分发策略
      group_by: [alertname]
#分组依据,分组的名称
      group_wait: 10s
#组告警的等待时间,也就是告警产生后等待十秒,如果同组内有其他的告警一起发送
      group_interval: 10s
#上下两个组,发送告警的间隔时间
      receiver: default-receiver
#定义由谁来收这个告警
      receivers:
      - name: 'default-receiver'
        email_configs:
        - to: '1654129473@qq.com'
#设置告警邮箱的收件人地址
        send_resolved: true

3、配置alertmanager

上传prometheus-alertmanager-cfg.yaml

100多行开始修改

kubectl -n monitor-sa create secret generic etcd-certs --from-file=/etc/kubernetes/pki/etcd/server.key --from-file=/etc/kubernetes/pki/etcd/server.crt --from-file=/etc/kubernetes/pki/etcd/ca.crt

#在指定命名空间内创建一个名称是etcd-certs的通用类型Secret。这个Secret用于存储etcd的证书文件
#etcd-certs:自定义名称
#generic:定义Secret的类型是通用类型
#file=/etc/kubernetes/pki/etcd/server.key:文件内容作为 "etcd-certs" 这个Secret中的一个选项
#这三个整数都是用于与etcd进行安全通信的。

prometheus%20%E5%92%8C%20alertmanager" style="background-color:transparent;margin-left:.0001pt;text-align:justify;">4、更新资源清单 yaml 文件,安装 prometheus 和 alertmanager

vim prometheus-alertmanager-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus-server
  namespace: monitor-sa
  labels:
    app: prometheus
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus
      component: server
  template:
    metadata:
      labels:
        app: prometheus
        component: server
      annotations:
        prometheus.io/scrape: 'false'
    spec:
      serviceAccountName: monitor
      initContainers:
      - name: init-chmod
        image: busybox:latest
        command: ['sh','-c','chmod -R 777 /prometheus;chmod -R 777 /etc']
        volumeMounts:
        - mountPath: /prometheus
          name: prometheus-storage-volume
        - mountPath: /etc/localtime
          name: timezone
      containers:
      - name: prometheus
        image: prom/prometheus:v2.45.0
        command:
          - prometheus
          - --config.file=/etc/prometheus/prometheus.yml
          - --storage.tsdb.path=/prometheus
          - --storage.tsdb.retention=720h
          - --web.enable-lifecycle
        ports:
        - containerPort: 9090
        volumeMounts:
        - name: prometheus-config
          mountPath: /etc/prometheus/
        - mountPath: /prometheus/
          name: prometheus-storage-volume
        - name: timezone
          mountPath: /etc/localtime
        - name: k8s-certs
          mountPath: /var/run/secrets/kubernetes.io/k8s-certs/etcd/
      - name: alertmanager
        image: prom/alertmanager:v0.20.0
        args:
        - "--config.file=/etc/alertmanager/alertmanager.yml"
        - "--log.level=debug"
        ports:
        - containerPort: 9093
          protocol: TCP
          name: alertmanager
        volumeMounts:
        - name: alertmanager-config
          mountPath: /etc/alertmanager
        - name: alertmanager-storage
          mountPath: /alertmanager
        - name: localtime
          mountPath: /etc/localtime
      volumes:
        - name: prometheus-config
          configMap:
            name: prometheus-config
            defaultMode: 0777
        - name: prometheus-storage-volume
          hostPath:
            path: /data
            type: Directory
        - name: k8s-certs
          secret:
            secretName: etcd-certs
        - name: timezone
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
        - name: alertmanager-config
          configMap:
            name: alertmanager
        - name: alertmanager-storage
          hostPath:
            path: /data/alertmanager
            type: DirectoryOrCreate
        - name: localtime
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai

kubectl get pods -n kube-system | grep kube-proxy |awk '{print $1}' | xargs kubectl delete pods -n kube-system

#删除k8s集群中位于“kube-system”命名空间中所有名称包含 "kube-proxy" 的 Pod
#kubectl get pods -n kube-system:获取kube-system命名空间中的所有pod
#grep kube-proxy:通过grep过滤出kube-proxy 的 Pod。
#awk '{print $1}':使用awk提取每一行的第一个字段。
#xargs kubectl delete pods -n kube-system:将提取到的pod名称作为参数还给kubectl delete pods -n kube-system。从而将这些pod删除
#这条命令可以快速删除指定命名空间中和kube-proxy关的所有 Pod。适用于触发创建或者进行一些调试和维护操作

5、创建alertmanager的svc

apiVersion: v1
kind: Service
metadata:
  labels:
    app: prometheus
  name: alertmanager
  namespace: monitor-sa
spec:
  ports:
  - name: alertmanager
    nodePort: 30066
    port: 9093
    targetPort: 9093
  selector:
    app: prometheus
  type: NodePort

6、访问测试

http://20.0.0.61:30066/#/alerts

inactive:表示已经激活的告警监控项

pending:告警的阀值已经触发,正在等待发送邮件

firing:表示告警项已经触发了发送配置(邮件,短信,电话,钉钉)

压力测试:

关闭压力测试之后,回到inactive状态


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

相关文章

Netty底层探究

Netty线程模型 // Netty模型 1.Netty抽象出两组线程池BossGroup和WorkerGroup,BossGroup专门负责接收客户端的连接,WorkerGroup专门负责网络的读写. 2.BossGroup和WorkerGroup类型都是NioEventLoopGroup. (NioEventLoopGroup相当于一个事件循环线程组,这个组中含有多个事件循环…

(自用)learnOpenGL学习总结-高级OpenGL-几何着色器

在顶点着色器和片段着色器中间还有一个几何着色器。 几何着色器的输入是一个图元的一组顶点,在几何着色器中进行任意变换之后再给片段着色器,可以变成完全不一样的图元、可以生成更多的顶点。 #version 330 core layout (points) in; layout (line_str…

某赛通电子文档安全管理系统 PolicyAjax SQL注入漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

jvm基础篇之垃圾回收[1](方法区、堆回收)

文章目录 垃圾回收类型手动垃圾回收:C/C的内存管理自动垃圾回收:Java的内存管理自动垃圾回收应用场景不同垃圾回收对比 线程不共享部分的回收方法区的回收手动触发回收 堆回收两种判断方法引用计数法查看垃圾回收日志可达性分析法GC Root对象类型可达性算…

【Spring框架】@Cacheable注解:缓存最佳实践

在Java开发中,性能优化是一个永恒的话题。对于使用Spring框架的应用程序来说,Cacheable 注解提供了一种简单有效的方式来提升性能,特别是对于那些计算成本高或数据变化不频繁的操作。本文将深入探讨 Cacheable 的使用方法和注意事项&#xff…

【nginx实战】通过nginx实现http 长连接(即keep alive)

文章目录 一. http的长连接历史1. HTTP短连接模型2. HTTP长连接模型 二. nginx作为代理时实现HTTP长连接1. nginx与client的长连接1.1. keepalive_timeout指令1.2. keepalive_requests指令* 场景分析 2. 保持和server的长连接2.1. location设置* 场景分析 2.2. upstream设置* 场…

盲盒小程序开发,小程序带来的优势

我国盲盒行业的产品主要是以手办、公仔、动漫周边等为主,与各类知名IP合作推出的盲盒产品引起了年轻人的兴趣,盲盒市场得到了快速发展。目前,我国盲盒行业已经进入了蓬勃发展时期,商业机遇较多! 在互联网时代下&#…

代理模式详解(重点解析JDK动态代理)

- 定义 在解析动态代理模式之前,先简单看下整个代理模式。代理模式分为普通代理、强制模式、动态代理模式。其中动态代理模式主要实现方式为Java JDK提供的JDK动态代理,第三方类库提供的,例如CGLIB动态代理。 代理模式就是为其他对象提供一种…