安装alertmanager

创建存放数据及插件的文件夹
# 在指定的node上创建文件夹
mkdir -p /data/k8s/alertmanager
chown -R 65534:root  alertmanager
创建alertmanager-cm.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:name: alertmanager-confignamespace: kube-ops
data:alertmanager.yml: |-# 全局配置项global:resolve_timeout: 5m # 处理超时时间,默认为5minsmtp_from: 'it@hz-health.cn'smtp_smarthost: 'smtp.exmail.qq.com:465'#smtp_smarthost: 'smtp.aliyun.com:465'smtp_auth_username: 'it@hz-health.cn'smtp_auth_password: 'yourpassword'smtp_require_tls: false# 定义路由树信息route:group_by: [alertname]  # 报警分组依据receiver: ops_notify   # 设置默认接收人group_wait: 30s        # 最初即第一次等待多久时间发送一组警报的通知group_interval: 60s    # 在发送新警报前的等待时间 下一次报警开车时间repeat_interval: 1h    # 重复发送告警时间。默认1h       第一次报警时间为group_interval  重复报警的时间为group_interval+repeat_intervalroutes:- receiver: ops_notify  # 基础告警通知group_wait: 10smatch_re:alertname: 实例存活告警|磁盘使用率告警   # 匹配告警规则中的名称发送- receiver: info_notify  # 消息告警通知group_wait: 10smatch_re:alertname: 内存使用率告警|CPU使用率告警# 定义基础告警接收者receivers:- name: ops_notifywebhook_configs:- url: http://prometheus-webhook-dingtalk.ihaozhuo.com/dingtalk/ops_dingding/sendsend_resolved: true  # 警报被解决之后是否通知email_configs:# - to: '423308591@qq.com‘  如果两个邮箱中间需要空格- to: 'it@hz-health.cn, xujiamin@hz-health.cn'send_resolved: true# 定义消息告警接收者- name: info_notifywebhook_configs:- url: http://prometheus-webhook-dingtalk.ihaozhuo.com/dingtalk/info_dingding/sendsend_resolved: true# 一个inhibition规则是在与另一组匹配器匹配的警报存在的条件下,使匹配一组匹配器的警报失效的规则。两个警报必须具有一组相同的标签。inhibit_rules:- source_match:severity: 'critical'target_match:severity: 'warning'equal: ['alertname', 'dev', 'instance']
创建alertmanager-deploy.yaml
---
apiVersion: apps/v1
kind: Deployment
metadata:name: alertmanagernamespace: kube-opslabels:app: alertmanager
spec:replicas: 1revisionHistoryLimit: 2selector:matchLabels:app: alertmanagerminReadySeconds: 0strategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1maxSurge: 1template:metadata:labels:app: alertmanagerspec:affinity:         #亲和性的调度设置nodeAffinity:   #策略为节点亲和性requiredDuringSchedulingIgnoredDuringExecution:      #亲和性的硬策略nodeSelectorTerms:   #这里不再使用nodeselector,使用这个参数可以进行相对简单的逻辑运算- matchExpressions:     #匹配表达式- key: kubernetes.io/hostname      #具体匹配规则(可以通过kubectl get node --show-labels找到相应规则)operator: In  #不在,简单的来说就是不在k8s-04节点values:- prod-k8s-n006containers:- name: alertmanagerimage: prom/alertmanager:v0.21.0args:- "--config.file=/etc/alertmanager/alertmanager.yml"- "--storage.path=/alertmanager/data"resources:limits:memory: "256Mi"cpu: "100m"readinessProbe:tcpSocket:port: 9093initialDelaySeconds: 30periodSeconds: 10livenessProbe:tcpSocket:port: 9093initialDelaySeconds: 60periodSeconds: 10ports:- containerPort: 9093protocol: TCPname: httpvolumeMounts:- name: datamountPath: /alertmanager/data- name: config-volumemountPath: "/etc/alertmanager/alertmanager.yml"subPath: alertmanager.ymlvolumes:- name: datahostPath:# 宿主上目录位置path: /data/k8s/alertmanagertype: DirectoryOrCreate- configMap:name: alertmanager-configname: config-volume
创建alertmanager-svc.yaml
---
apiVersion: v1
kind: Service
metadata:name: alertmanagernamespace: kube-opslabels:app: alertmanager
spec:selector:app: alertmanagertype: NodePortports:- port: 80protocol: TCPtargetPort: 9093
创建alertmanager-ingress.yaml
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
# 通过添加下面的annotations 来开启白名单
# 关闭80强制跳转443 为ingress配置增加注解(annotations):nginx.ingress.kubernetes.io/ssl-redirect: 'false' 就可以禁止http强制跳转至httpsannotations:#nginx.ingress.kubernetes.io/whitelist-source-range: "60.191.70.64/29, xx.xxx.0.0/16"nginx.ingress.kubernetes.io/ssl-redirect: 'false'name: prod-alertmanagernamespace: kube-ops
spec:rules:- host: alertmanager.ihaozhuo.comhttp:paths:- path: /backend:serviceName: alertmanagerservicePort: 80
运行alertmanager
kubectl apply -f ./

安装prometheus-webhook-dingtalk

先看一下prometheus-webhook-dingtalk的参数 打算通过configmap的方式挂载config.yml并开启ui。

之前都是直接启动的时候通过命令/srv/alertmanager/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --ding.profile=ops_dingding=https://oapi.dingtalk.com/robot/send?access_token=1234567890 --web.enable-ui 启动,研究这个config花了点时间

制作一个prometheus-webhook-dingtalk的镜像
创建Dockerfile
FROM centos:centos7.4.1708
MAINTAINER PDABC Enterprise Container Images <jiaminxu@hz-health.cn>ADD  prometheus-webhook-dingtalk /etc/prometheus-webhook-dingtalk
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeWORKDIR /etc/prometheus-webhook-dingtalk#公开端口
EXPOSE 8060USER root
#设置启动命令
ENTRYPOINT ["sh", "-c","/etc/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk"]
# 想写死的话 也是可以的。
#ENTRYPOINT ["sh", "-c","/etc/prometheus-webhook-dingtalk/prometheus-webhook-dingtalk --ding.profile=ops_dingding=https://oapi.dingtalk.com/robot/send?access_token=1234567890   --web.enable-ui "]
编译并上床镜像
docker build -t registry.cn-shanghai.aliyuncs.com/yjk-datag/prometheus-webhook-dingtalk:v3  .
docker push registry.cn-shanghai.aliyuncs.com/yjk-datag/prometheus-webhook-dingtalk:v3
创建prometheus-webhook-dingtalk-cm.yaml

https://github.com/timonwong/prometheus-webhook-dingtalk

apiVersion: v1
kind: ConfigMap
metadata:name: prometheus-webhook-dingtalk-confignamespace: kube-ops
data:config.yml: |targets:# 这个是我用到的ops_dingding:url: https://oapi.dingtalk.com/robot/send?access_token=10bda98979ae2155b6822b699cde1841d4fbd8514c0441bbbb4485caddf3a388x #这是是钉钉机器人的webhookwebhook2:url: https://oapi.dingtalk.com/robot/send?access_token=10bda98979ae2155b6822b699cde1841d4fbd8514c0441bbbb4485caddf3a388x #这是是钉钉机器人的webhookwebhook_legacy:url: https://oapi.dingtalk.com/robot/send?access_token=10bda98979ae2155b6822b699cde1841d4fbd8514c0441bbbb4485caddf3a388x #这是是钉钉机器人的webhook# Customize template contentmessage:# Use legacy templatetitle: '{{ template "default.title" . }}'text: '{{ template "default.content" . }}'webhook_mention_all:url: https://oapi.dingtalk.com/robot/send?access_token=10bda98979ae2155b6822b699cde1841d4fbd8514c0441bbbb4485caddf3a388x #这是是钉钉机器人的webhookmention:all: truewebhook_mention_users:url: https://oapi.dingtalk.com/robot/send?access_token=10bda98979ae2155b6822b699cde1841d4fbd8514c0441bbbb4485caddf3a388x #这是是钉钉机器人的webhookmention:mobiles: ['15xxxxxxxx0']
创建prometheus-webhook-dingtalk-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: prometheus-webhook-dingtalknamespace: kube-opslabels:app: prometheus-webhook-dingtalk
spec:replicas: 1revisionHistoryLimit: 2selector:matchLabels:app: prometheus-webhook-dingtalkminReadySeconds: 0strategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1maxSurge: 1template:metadata:labels:app: prometheus-webhook-dingtalkspec:affinity:         #亲和性的调度设置nodeAffinity:   #策略为节点亲和性requiredDuringSchedulingIgnoredDuringExecution:      #亲和性的硬策略nodeSelectorTerms:   #这里不再使用nodeselector,使用这个参数可以进行相对简单的逻辑运算- matchExpressions:     #匹配表达式- key: kubernetes.io/hostname      #具体匹配规则(可以通过kubectl get node --show-labels找到相应规则)operator: In  #不在,简单的来说就是不在k8s-04节点values:- prod-k8s-n006containers:- name: prometheus-webhook-dingtalkimage: registry.cn-shanghai.aliyuncs.com/yjk-datag/prometheus-webhook-dingtalk:v3args:# - "--web.enable-ui" # 这个web ui貌似在这里添加不生效。我也用不上 可以在构建镜像的时候加上试试- "----config.file=/etc/prometheus-webhook-dingtalk/config.yml"resources:limits:memory: "256Mi"cpu: "100m"readinessProbe:tcpSocket:port: 8060initialDelaySeconds: 30periodSeconds: 10livenessProbe:tcpSocket:port: 8060initialDelaySeconds: 60periodSeconds: 10ports:- containerPort: 8060protocol: TCPname: httpvolumeMounts:- name: config-volumemountPath: "/etc/prometheus-webhook-dingtalk/config.yml"subPath: config.ymlvolumes:- configMap:name: prometheus-webhook-dingtalk-configname: config-volume
创建prometheus-webhook-dingtalk-svc.yaml
---
apiVersion: v1
kind: Service
metadata:name: prometheus-webhook-dingtalknamespace: kube-opslabels:app: prometheus-webhook-dingtalk
spec:selector:app: prometheus-webhook-dingtalktype: NodePortports:- port: 80protocol: TCPtargetPort: 8060

创建prometheus-webhook-dingtalk-ingress.yaml

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
# 通过添加下面的annotations 来开启白名单
# 关闭80强制跳转443 为ingress配置增加注解(annotations):nginx.ingress.kubernetes.io/ssl-redirect: 'false' 就可以禁止http强制跳转至httpsannotations:#nginx.ingress.kubernetes.io/whitelist-source-range: "60.191.70.64/29, xx.xxx.0.0/16"nginx.ingress.kubernetes.io/ssl-redirect: 'false'name: prod-prometheus-webhook-dingtalknamespace: kube-ops
spec:rules:- host: prometheus-webhook-dingtalk.ihaozhuo.comhttp:paths:- path: /backend:serviceName: prometheus-webhook-dingtalkservicePort: 80

运行prometheus-webhook-dingtalk

kubectl apply -f ./

测试告警

修改prometheus-webhook-dingtalk的svc为headless

好处是可以不用域名访问 可以使用prometheus-webhook-dingtalk-headless.kube-ops.svc.cluster.local:8060 来请求

创建prometheus-webhook-dingtalk-headless-svc.yaml

---
apiVersion: v1
kind: Service
metadata:name: prometheus-webhook-dingtalk-headlessnamespace: kube-opslabels:app: prometheus-webhook-dingtalk
spec:ports:- port: 80name: http# clusterIP 设置为 NoneclusterIP: Noneselector:app: prometheus-webhook-dingtalk
kubectl apply -f ./

​ 应用之后 通过其他容器测试

[kubernetes]-k8s安装alertmanager和prometheus-webhook-dingtalk相关推荐

  1. Kubernetes -K8S安装部署及SpringCloud应用

    k set image deploy kubia nodejs=luksa/kubia:v2 一.Kubernetes - 一键安装Kubernetes集群 集群方案 使用三台物理机或VMware虚拟 ...

  2. Kubernetes (K8s) 安装部署过程(七)之部署node节点

    部署前的准备 1).关闭swapp 功能否则kubelet启动将失败. vim /etc/fstab注释下面这行内容 /dev/mapper/cl-swap swap swap defaults 0 ...

  3. kubernetes(k8s)-介绍2

    kubernetes(k8s)-安装(二) 什么是Kubernetes Kubernetes是一个开源平台,用于跨主机群集自动部署,扩展和操作应用程序容器,提供以容器为中心的基础架构. 使用Kuber ...

  4. [基础服务] [kubernetes] KubeSphere 基于 Kubernetes (K8S)的安装

    简介 KubeSphere是个全栈的Kubernetes容器云PasS解决方案 1.KubeSphere是个容器云平台,即PaaS平台,而Kubernetes是个容器编排系统,二者不一样.而在DevO ...

  5. 【云原生 | Kubernetes 系列】---AlertManager安装及告警发送

    AlertManager安装及告警发送 Prometheus触发一条告警的过程 prometheus-> 触发阈值->超出持续时间->AlertManager->分组|抑制|静 ...

  6. Kubernetes学习-K8S安装篇-Kubeadm安装高可用K8S集群

    Kubernetes学习-K8S安装篇-Kubeadm高可用安装K8S集群 1. Kubernetes 高可用安装 1.1 kubeadm高可用安装k8s集群1.23.1 1.1.1 基本环境配置 1 ...

  7. 使用阿里云和gcr.azk8s.cn镜像安装Kubernetes (K8s)

    使用阿里云和gcr.azk8s.cn镜像安装Kubernetes (K8s) 由于墙的原因,k8s.gcr.io无法从国内访问,因此在安装Kubernetes时需要使用到国内的镜像.本文讲解使用kub ...

  8. Centos7 安装部署Kubernetes(k8s)集群过程

    1.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.9 Docker version 20.10.12 x86_64 2.前言 如下图描述了软件部 ...

  9. Kubernetes(k8s)集群安装(需要3台centos7)

    k8s安装的命令 1:关闭防火墙,关闭selinux 2:修改主机名 3:修改hosts文件 4:禁用swap内存交换 5:安装docker 6:上传k8s.repo 7:初始化集群 8:初始化k8s ...

最新文章

  1. 两个引用指向同一个数组的内存图
  2. AWS如何迁移实例到另一个区?
  3. 小程序canvan画布,现两张图片合成一张,并保存到本地
  4. MFC无边框对话框实现拖动
  5. c实现三角形角度大于一个值_初中数学三角形知识点小结
  6. 任务平均分配的小算法
  7. android学生管理实例,学生管理系统-基于SQLite数据库的Android应用
  8. 清华又出一个姚班!人工智能班成立,姚期智担任首席教授,首批招生30人
  9. yum无法正常使用的解决办法
  10. julia安装源_在Linux系统中下载与安装Julia 1.0.1
  11. linux网络端口失效( Device eth0 does not seem to be present,delaying initialization)解决方法
  12. jetbrain秘密路径
  13. 为什么未来是全栈工程师的世界?
  14. EDK2编译环境搭建、编译、在模拟器运行、在笔记本运行
  15. TencentOS Server编译安装nginx(1.22.0)
  16. vscode + prettier 专治代码洁癖
  17. Linux 永久修改主机名(转载)
  18. 多元有序logistic回归分析_多元Logistic_回归分析解析.ppt
  19. 通往测试架构师之路(1):那些家伙在干什么?
  20. 诺基亚手机运行linux,LINUX:基本功能(2)_诺基亚手机_手机其它OS-中关村在线...

热门文章

  1. MIT photonic band 安装
  2. 海康威视网络监控摄像头常见设置-工作随笔
  3. dnf7月7日服务器维护,DNF7月7日更新维护公告 修复部分魔枪士转职书问题
  4. 2021年A特种设备相关管理(锅炉压力容器压力管道)考试题及A特种设备相关管理(锅炉压力容器压力管道)考试技巧
  5. 懂安全攻防的工程师,竟如此吃香!
  6. Flash动画个人学习总结
  7. 33. 修复FTM apk(开机)和FTM(关机)没有OTG测试项
  8. 海思I2C工具i2c_read使用地址的规则
  9. 【CTF】DDoS教程
  10. Android多线程UI更新-Handler