kube-prometheus监控报警

一、参考文档

未修改镜像地址的yaml文件:https://github.com/coreos/kube-prometheus/tree/master/manifests

(使用腾讯云镜像仓库)修改镜像地址的yaml文件:https://gitee.com/mylanvv/kube-prometheus.git

prometheus官方文档:https://prometheus.io/docs/alerting/overview/

prometheus官方网站:https://prometheus.io/

 

 

二、组件

kube-prometheus 是一整套监控解决方案,它使用 Prometheus 采集集群指标,Grafana 做展示,包含如下组件:

  • The Prometheus Operator
  • Highly available Prometheus
  • Highly available Alertmanager
  • Prometheus node-exporter
  • Prometheus Adapter for Kubernetes Metrics APIs (k8s-prometheus-adapter)
  • kube-state-metrics
  • Grafana

 

 

三、修改yaml文件配置

3.1 为grafana  promethes alertmanager添加nodeport端口

grafana,修改grafana-service.yaml

kube-prometheus监控报警_第1张图片

promethes,修改prometheus-service.yaml

kube-prometheus监控报警_第2张图片

alertmanager,修改alertmanager-service.yaml

kube-prometheus监控报警_第3张图片

 

3.2 为alertmanager配置报警邮箱配置(可用企业微信、钉钉、webhook等等)

修改alertmanager-secret.yaml

kube-prometheus监控报警_第4张图片

apiVersion: v1
data: {}
kind: Secret
metadata:
  name: alertmanager-main
  namespace: monitoring
stringData:
  alertmanager.yaml: |-
    global:
      resolve_timeout: 1m # 处理超时时间
      smtp_smarthost: 'smtp.qq.com:465' # 邮箱smtp服务器代理
      smtp_from: '[email protected]' # 发送邮箱名称
      smtp_auth_username: '[email protected]' # 邮箱名称
      smtp_auth_password: 'xxx' # 授权密码
      smtp_require_tls: false # 不开启tls 默认开启

    receivers:
    - name: Default
      email_configs: # 邮箱配置
      - to: "[email protected]" # 接收警报的email配置

    route:
      group_interval: 1m # 在发送新警报前的等待时间
      group_wait: 10s # 最初即第一次等待多久时间发送一组警报的通知 
      receiver: Default
      repeat_interval: 1m # 发送重复警报的周期
type: Opaque

 

 

四、开始部署

4.1 使用已经修改过镜像的git地址

kube-prometheus监控报警_第5张图片

git clone https://gitee.com/mylanvv/kube-prometheus.git

4.2 启动prometheus-operator 

kube-prometheus监控报警_第6张图片

cd 到manifests下的setup目录

创建 

kubectl apply -f .

查看是否正常启动 

kubectl get pods -n monitoring

 

 4.3 启动 promethes metric adapter grafana alertmanager

cd 到manifests目录

kube-prometheus监控报警_第7张图片

创建 

kubectl apply -f .

查看是否正常启动 

kubectl get pods -n monitoring

kube-prometheus监控报警_第8张图片

 

五、查看报警接收邮箱是否有邮件

因为Alertmanager默认有一个Watchdog是报警状态的

 

因为Alertmanager设置了1m 所以会一直接收,可以打开Alertmanager的管理页面,设置为静默期

 Alertmanager地址:IP:NodePrt    http://x.x.x.x:32302

kube-prometheus监控报警_第9张图片

 

六、prometheus增加自定义监控 

定义一个pod状态不是running的监控

修改,prometheus-rules.yaml,在最后面插入内容

kube-prometheus监控报警_第10张图片

插入如下内容 :

    - alert: pod-status
      annotations:
        message: vv test pod-status
      expr: |
        kube_pod_container_status_running != 1
      for: 1m
      labels:
        severity: warning

 

刷新prometheus-rules.yaml,因为使用挂载方式,刷新后,会同步到pod内,刷新需要一会时间

kubectl apply -f prometheus-rules.yaml

 

打开prometheus  查看是否已添加刚刚的监控项  pod-status

访问地址: IP:nodeport        http://x.x.x.x:32301

 kube-prometheus监控报警_第11张图片

 

 

七、测试prometheus添加的自定义监控 (pod-status)

创建不是running的容器

yaml文件内容

kube-prometheus监控报警_第12张图片

apiVersion: apps/v1
kind: Deployment
metadata:
  name: vv
spec:
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  selector:
    matchLabels:
      app: vv
  template:
    metadata:
      labels:
        app: vv
    spec:
      imagePullSecrets:
      - name: registry-pull-secret
      containers:
      - name: vv
        image: ccr.ccs.tencentyun.com/lanvv/test-jdk-1-8.0.181-bak:latest
        imagePullPolicy: IfNotPresent

创建 

等一会查看报警接收邮箱

kube-prometheus监控报警_第13张图片

 

再次查看prometheus

kube-prometheus监控报警_第14张图片

 

八、grafana创建自定义图表

先在prometheus验证我们的查询条件是否满足

kube_pod_container_status_running != 1

kube-prometheus监控报警_第15张图片

继续去grafana添加图标 

grafana地址: ip:32300  http://x.x.x.x:32300

kube-prometheus监控报警_第16张图片

kube-prometheus监控报警_第17张图片

输入刚刚的查询条件

kube-prometheus监控报警_第18张图片

右上角点击保存按钮,保存图表

结果如下:

kube-prometheus监控报警_第19张图片

 

 

九、 结论

整个下来,都是一些模板,简单配置

如何更好的操作整个监控,需要很多调优,增加参数配置

比如alertmanager告警不单单只使用邮件,一个用户,如何区分组,静默期,正则匹配,报警时间,间隔

prometheus 如何自定义各种监控条件 promql 

grafana 如何制作好看的图表,收集

各个组件如何使用pv、pvc持久化数据

 

你可能感兴趣的:(kube-prometheus监控报警)