Prometheus-Operation钉钉报警

2019-08-15 16:36:51 浏览数 (1)

本篇文章基于Prometheus-Operation,收集Redis、MySQL、RabbitMQ的监控信息并报警

Redis钉钉报警
数据收集

首先启动一个Redis的信息收集的应用程序

代码语言:javascript复制
docker run -d --name redis_exporter -e REDIS_ADDR="redis://172.16.40.170:6379"  -e REDIS_PASSWORD="123456”-p 9121:9121 oliver006/redis_exporter

此时我们打开浏览器,访问ip:9121这个地址就可以获取到redis的监控信息了。

数据保存

这一步就是把上方应用程序收集的监控数据保存到prometheus中 将信息收集程序通过Endpoints、Service、ServiceMonitor与k8s中的prometheus绑定

代码语言:javascript复制
apiVersion: v1
kind: Endpoints
metadata:
    name: redis-metrics
    namespace: monitoring
    labels:
        k8s-app: redis-metrics
subsets:
    - addresses:
        - ip: 172.16.40.170
      ports:
      - name: redis-exporter
        port: 9121
        protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
    name: redis-metrics
    namespace: monitoring
    labels:
        k8s-app: redis-metrics
spec:
    type: ClusterIP
    clusterIP: None
    ports:
    - name: redis-exporter
      port: 9121
      protocol: TCP
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
    name: redis-metrics
    namespace: monitoring
    labels:
        app: redis-metrics
        k8s-app: redis-metrics
        prometheus: kube-prometheus
        release: kube-prometheus
spec:
    selector:
        matchLabels:
            k8s-app: redis-metrics
        namespaceSelector:
            matchNames:
            - monitoring
    endpoints:
    - port: redis-exporter
      interval: 15s
数据展示

此时在grafann中添加一个模板763即可成功展示刚刚收集到的数据

报警

首先你需要在一个钉钉群建一个报警集群人,集群人类型选择自定义,然后在这个机器人身上你会发现一个token,记住这个token哦

紧接着需要对prometheus做一下改造,来到安装包的 contrib/kube-prometheus/manifests/目录 在这个目录下新建一个alertmanager.yaml文件

代码语言:javascript复制
global:
  resolve_timeout: 5m
route:
  group_by: ['job']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 12h
  receiver: webhook
receivers:
- name: 'webhook'
  webhook_configs:
  - url: 'http://172.16.40.165:32505'
    send_resolved: true

通过如下命令替换原有的配置

代码语言:javascript复制
kubectl delete  secret alertmanager-main -n monitoring
kubectl create  secret generic alertmanager-main --from-file=alertmanager.yaml -n monitoring

因为钉钉与普罗米修斯的数据格式是不一样的,所以在这里还不能直接把普罗米修斯的数据发给钉钉。 上方有一个url地址,这个地址呢,需要我们自己写个小程序,把普罗米修斯发来的数据经过格式转换后发给钉钉,而钉钉的格式要求可见这个文档

代码语言:javascript复制
https://ding-doc.dingtalk.com/doc#/serverapi2/qf2nxq
MySQL钉钉报警

使用如下方式收集MySQL监控信息

代码语言:javascript复制
docker run -d --name mysql_exporter -e DATA_SOURCE_NAME="root:123456@(172.16.40.159:3306)/" -p 9104:9104  prom/mysqld-exporter

数据存储参见上方Redis的配置 数据展示使用Grafan模板736

RabbitMQ钉钉报警

使用如下方式收集MySQL监控信息

代码语言:javascript复制
docker run -d --name rabbitmq --env RABBIT_URL="http://172.16.40.169:15672" --env RABBIT_USER="monitoring" --env RABBIT_PASSWORD="monitoring"   -p 9419:9419 kbudde/rabbitmq-exporter

注意RabbitMQ的用户必须具有monitoring权限,否则会报如下错误

代码语言:javascript复制
time="2019-08-07T01:17:08Z" level=error msg="Error while retrieving data from rabbitHost" error="<nil>" host="http://172.16.40.169:15672" statusCode=401
time="2019-08-07T01:17:08Z" level=warning msg="retrieving node failed" error="Error while retrieving data from rabbitHost"

数据存储参见上方Redis的配置 数据展示使用Grafan模板4279

0 人点赞