Prometheus监控k8s集群使用邮箱和微信告警

总目录索引: Helm 从入门到放弃系列

1、特征

普罗米修斯的主要特点是:

  • 一个多维 数据模型,其中包含通过度量标准名称和键/值对标识的时间序列数据

  • PromQL,一种 灵活的查询语言 ,可利用此维度

  • 不依赖分布式存储;单服务器节点是自治的

  • 时间序列收集通过HTTP上的拉模型进行

  • 通过中间网关支持 推送时间序列

  • 通过服务发现或静态配置发现目标

  • 多种图形和仪表板支持模式

2、组件

Prometheus生态系统包含多个组件,其中许多是可选的:

  •  Prometheus主 服务器,它会刮取并存储时间序列数据

  •  客户端库,用于检测应用程序代码

  • 一个支持短期工作的 推送网关

  • 诸如HAProxy,StatsD,Graphite等服务的专用 出口商

  • 一个 alertmanager处理警报

  • 各种支持工具

大多数Prometheus组件都是用 Go编写的,因此易于构建和部署为静态二进制文件。

3、架构

下图说明了Prometheus的体系结构及其某些生态系统组件:

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus

        Prometheus直接或通过中介推送网关从已检测作业中删除指标,以用于短期作业。它在本地存储所有报废的样本,并对这些数据运行规则,以汇总和记录现有数据中的新时间序列,或生成警报。 Grafana或其他API使用者可以用来可视化收集的数据。

4、安装

前提需要有helm环境:

Prometheus监控k8s集群使用邮箱和微信告警_alertmanager告警_02

helm  install  prometheus   stable/prometheus

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus_03

安装成功,查看pod状态会发现有两个处于pending状态,是因为需要请求pv

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus告警_04

这里使用hostPath来创建pv

apiVersion: v1
kind: PersistentVolume
metadata:name: prometheus-pv1
spec:capacity:storage: 2GivolumeMode: FilesystemaccessModes:-  ReadWriteOncepersistentVolumeReclaimPolicy: RetainhostPath:path: /app/prometheus/pv1

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus监控k8s_05

查看pod状态会发现有个pod会报错,并查看日志是报错是容器名不同

Prometheus监控k8s集群使用邮箱和微信告警_k8s集群监控_06

真正的原因是因为使用的hoatPath,pvc请求的权限不够,到worker节点给对应的hostpath加777的权限即可,这是我通过rancher查看到的报错

msg="Error opening query log file" file=/data/queries.active err="open /data/queries.active: permission denied"
  • 1.

5、访问web界面

Prometheus监控k8s集群使用邮箱和微信告警_alertmanager告警_07

这里还需要修改Prometheus-server的Port类型为NodePort。

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus告警_08

6、安装grafana

helm  pull  stable/grafana

tar xvf grafana-4.2.2.tgz

vim grafana/values.yaml    #设置admin的密码为admin123

Prometheus监控k8s集群使用邮箱和微信告警_alertmanager告警_09

helm  install grafana  ./grafana

Prometheus监控k8s集群使用邮箱和微信告警_k8s集群监控_10

由于grafana没有使用持久存储,根据需求修改为hostpath持久存储,需要注意的是,宿主机目录也需要777的权限

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus监控k8s_11

还需要需改grafana的svc类型为NodePort

Prometheus监控k8s集群使用邮箱和微信告警_alertmanager告警_12

访问web界面,用户admin,密码:admin123

Prometheus监控k8s集群使用邮箱和微信告警_alertmanager告警_13

7、导入Prometheus

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus监控k8s_14

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus监控k8s_15

填入Prometheus的地址

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus告警_16

则表示验证通过

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus监控k8s_17

导入grafana的模板

Prometheus监控k8s集群使用邮箱和微信告警_alertmanager告警_18

Prometheus监控k8s集群使用邮箱和微信告警_k8s集群监控_19

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus_20

这里选择Prometheus

Prometheus监控k8s集群使用邮箱和微信告警_k8s集群监控_21

即可看到灰常华丽的仪表盘了

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus监控k8s_22

这里提供几个模板的编号:

10000,315,7249,5228,8685,8588

8、配置alertmanager告警

8.1关联alertmanager和prometheus

添加alertmanager的服务名称

alertmanagers:
- static_configs:- targets: ["prometheus-alertmanager:80"]
  • 1.
  • 2.
  • 3.

Prometheus监控k8s集群使用邮箱和微信告警_alertmanager告警_23

添加告警规则

Prometheus监控k8s集群使用邮箱和微信告警_k8s集群监控_24

  rules.yml: |groups:- name: Hostrules:- alert: HostMemory Usageexpr: sum(kube_pod_container_resource_requests_memory_bytes) / sum(kube_node_status_allocatable_memory_bytes) * 100 >  80for: 1mlabels:name: Memoryteam: wechatseverity: Warningannotations:summary: " {{ $labels.appname }} "description: "宿主机内存使用率超过80%."value: "{{ $value }}"- alert: HostCPU Usageexpr: sum(kube_pod_container_resource_requests_cpu_cores) / sum(kube_node_status_allocatable_cpu_cores) * 100 > 60for: 1mlabels:name: CPUteam: wechatseverity: Warningannotations:summary: " {{ $labels.appname }} "description: "宿主机CPU使用率超过60%."value: "{{ $value }}"- alert: HostFilesystem Usageexpr: (sum(node_filesystem_size_bytes{device!="rootfs"}) - sum(node_filesystem_free_bytes{device!="rootfs"})) / sum(node_filesystem_size_bytes{device!="rootfs"}) >  0.8for: 1mlabels:name: Diskteam: wechatseverity: Warningannotations:summary: " {{ $labels.appname }} "description: " 宿主机 [ {{ $labels.mountpoint }} ]分区使用超过80%."value: "{{ $value }}%"
  • 1

保存后重新启动Prometheus服务。

8.2配置企业微信告警

编写告警模板

apiVersion: v1
data:wechat.tmpl: |{{ define "wechat.default.message" }}{{ range .Alerts }}========start==========告警程序: prometheus_alert告警级别: {{ .Labels.severity }}告警类型: {{ .Labels.alertname }}故障主机: {{ .Labels.instance }}告警主题: {{ .Annotations.summary }}告警详情: {{ .Annotations.description }}触发时间: {{ .StartsAt.Format "2006-01-02 15:04:05" }}========end=========={{ end }}{{ end }}
kind: ConfigMap
metadata:name: wechat-tmplnamespace: default
  • 1.

修改prometheus-alertmanager的yaml文件,将微信配置挂载进来

Prometheus监控k8s集群使用邮箱和微信告警_k8s集群监控_25

登录企业微信,创建机器人

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus告警_26

获取api_secret和agent_id

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus告警_27

点击我的企业、企业信息,获取corp_id

Prometheus监控k8s集群使用邮箱和微信告警_k8s集群监控_28

需要报警的组,获取to_party

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus_29

修改prometheus-alertmanager的configmap文件

apiVersion: v1
data:alertmanager.yml: |global:resolve_timeout: 5mroute:group_interval: 5mgroup_wait: 10sreceiver: emailrepeat_interval: 10mroutes:- receiver: wechatgroup_wait: 10smatch:team: wechattemplates:- "/etc/alertmanager-tmpl/wechat.tmpl"receivers:- name: wechatwechat_configs:- corp_id: ww8e2ba8bad3ee2df5to_party: 1agent_id: 1000002api_secret: HbyB2SNaa26y9fziO7zt3FQnd34wT1i_iB6Q0I6KG60send_resolved: true
kind: ConfigMap
metadata:labels:app: prometheusname: prometheus-alertmanagernamespace: default

重启alertmanager服务即可,如果需要测试,在告警规则降低阈值即可。

8.3配置邮件告警

修改alertmanager的configmap文件

apiVersion: v1
data:alertmanager.yml: |global:resolve_timeout: 5msmtp_smarthost: smtp.qq.com:587       #端口有的是465,有的是587smtp_from: 982012556@qq.com         #邮箱地址smtp_auth_username: 982012556@qq.com     #邮箱地址smtp_auth_password: hblcukkqnzwebdai     #在邮箱中开启SMTP服务所得的密码smtp_require_tls: trueroute:group_interval: 5mgroup_wait: 10sreceiver: emailrepeat_interval: 10mroutes:- receiver: emailgroup_wait: 10smatch:team: wechat          #这是我设置的规则组,可在Prometheus的配置文件中随意设置receivers:- name: emailemail_configs:- to: 982012556@qq.comsend_resolved: true
kind: ConfigMap
metadata:labels:app: prometheusname: prometheus-alertmanagernamespace: default

Prometheus监控k8s集群使用邮箱和微信告警_Prometheus_30


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部