System Reboot Engineer System Reboot Engineer
首页
运维
编程

小布江

首页
运维
编程
  • Kubernetes

  • 日常

  • Prometheus

    • Alertmanager报警历史持久化
    • blackbox-exporter监测站点
    • 监控kafka小tips
    • 常用Exporter
    • 远程存储之VictoriaMetrics
    • Nginx-vts模块
    • alertmanager
    • VMagent
    • VMalert
    • Ci

    • 运维
    • Prometheus
    小布江
    2024-10-14
    目录

    VMalert


    使用 vmagent 代替 prometheus 抓取监控指标数据,要想完全替换 prometheus 还有一个非常重要的部分就是报警模块,之前都是在 prometheus 中定义报警规则评估后发送给 alertmanager 的,同样对应到 vm 中也有一个专门来处理报警的模块: vmalert。


    # 1 特性
    要开始使用 vmalert,需要满足以下条件:
      1.报警规则列表:要执行的 PromQL/MetricsQL 表达式
      2.数据源地址:可访问的 VictoriaMetrics 实例,用于规则执行
      3.通知程序地址:可访问的 Alertmanager 实例,用于处理,汇总警报和发送通知
    
    1
    2
    3
    4
    # 2 部署
    [root@cce vm]# vim vmalert-cm.yaml
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: vmalert-config
      namespace: kube-mon
    data:
      node.yaml: |
        groups:
        - name: node
          rules:
          - alert: NodeDiskUsageHigh
            expr: 100 - node_filesystem_free_bytes{fstype=~"xfs|ext4"} / node_filesystem_size_bytes{fstype=~"xfs|ext4"} * 100 > 90
            for: 10m
            labels:
              severity: R1
            annotations:
              description: "环境:{{$labels.cluster}}/{{ $labels.instance }}: {{ $labels.mountpoint }} 分区使用大于90% (当前值: {{ printf \"%.2f%%\" $value }}) 服
    务:{{ $labels.node_name }}"
    ---------------------------------------------------------------------------------------------------------------          
    [root@cce vm]# vim vmalert-dep.yaml          
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: vmalert
      namespace: kube-vm
      labels:
        app: vmalert
    spec:
      ports:
        - name: vmalert
          port: 8080
          targetPort: 8080
      type: NodePort
      selector:
        app: vmalert
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: vmalert
      namespace: kube-vm
      labels:
        app: vmalert
    spec:
      selector:
        matchLabels:
          app: vmalert
      template:
        metadata:
          labels:
            app: vmalert
        spec:
          containers:
            - name: vmalert
              image: victoriametrics/vmalert:v1.77.0
              imagePullPolicy: IfNotPresent
              args:
                - -rule=/etc/ruler/*.yaml
                - -datasource.url=http://victoria-metrics.kube-mon.svc.cluster.local:8428 # vm-single
                - -notifier.url=http://alertmanager.kube-mon.svc.cluster.local:9093
                - -remoteWrite.url=http://victoria-metrics.kube-mon.svc.cluster.local:8428 
                - -evaluationInterval=15s
                - -httpListenAddr=0.0.0.0:8080
              # env:
              #  - name: TZ
              #    value: Asia/Shanghai # 如果告警模版不高兴转换CST tinme可以加上时区变量获取CST TIME
              resources:
                limits:
                  cpu: '2'
                  memory: 2Gi
                requests:
                  cpu: 100m
                  memory: 256Mi
              ports:
                - containerPort: 8080
                  name: http           
              volumeMounts:
                - mountPath: /etc/ruler/
                  name: ruler
                  readOnly: true
          volumes:
            - configMap:
                name: vmalert-config
              name: ruler
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86

    上面的资源清单中将报警规则以 volumes 的形式挂载到了容器中,通过 -rule 指定了规则文件路径,-datasource.url 指定了 vmselect 的路径,-notifier.url 指定了 Alertmanager 的地址,其中 -evaluationInterval 参数用来指定评估的频率的,由于我们这里添加了记录规则,所以还需要通过 -remoteWrite.url 指定一个远程写入的地址.

    部署成功后,如果有报警规则达到了阈值就会触发报警,可以通过 Alertmanager 页面查看触发的报警规则.


    # 3 同样 vmalert 也提供了一个简单的页面,可以查看所有的 Groups

    image-20241014100445950

    #vmalert
    上次更新: 2025/04/25, 03:40:17
    VMagent
    Jenkins-ci

    ← VMagent Jenkins-ci→

    最近更新
    01
    Harbor复制镜像
    04-15
    02
    CPU亲和
    04-10
    03
    开启telnet登录
    04-09
    更多文章>
    Theme by Vdoing
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式