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

你是否曾经在凌晨时分收到运维团队的紧急消息?当 K8s 集群出现故障时,及时的告警是生命线。有没有想过,利用 Prometheus 搭配邮箱和微信告警,让监控变得智能化和高效化?

如何通过 Prometheus 配合邮箱和微信告警,打造一套高效、智能的 Kubernetes 集群监控系统?

随着云原生架构和微服务的普及,Kubernetes 成为很多企业的基础设施。而高效的监控与告警系统成为保障业务稳定运行的重要一环。通过 Prometheus 和告警系统的组合,企业可以实现更加智能和即时的响应机制,从而减少停机时间和故障恢复时间。

为什么选择 Prometheus?
  1. 高效的时间序列数据库
    Prometheus 作为一个开源监控系统,专为时间序列数据设计。它支持高效存储与查询,可以毫不费力地处理 Kubernetes 集群中产生的海量指标数据。

  2. K8s 原生支持
    Prometheus 天生就适合与 Kubernetes 集群结合,通过其集成的 K8s 服务发现与自动发现功能,能够无缝监控集群中的每个容器和 Pod。

  3. 告警机制自定义强大
    Prometheus 的 Alertmanager 允许用户设置告警规则,并支持与多种通知渠道集成,包括邮箱、微信等,确保关键问题第一时间得到响应。

01 特征

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

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

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

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

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

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

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

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

02 组件

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

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

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

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

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

  • 一个 alertmanager处理警报

  • 各种支持工具

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

03 架构

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

图片

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

04 安装

前提需要有helm环境:

图片

图片

图片

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

图片

这里使用hostPath来创建pv

图片

图片

 

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

图片

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

图片

 

05 访问web界面

图片

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

图片

06 安装grafana

图片

图片

图片

图片

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

图片

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

图片

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

图片

07 导入Prometheus

图片

图片

填入Prometheus的地址

图片

则表示验证通过

图片

导入grafana的模板

图片

图片

图片

这里选择Prometheus

图片

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

图片

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

图片

08 配置alertmanager告警

1、关联alertmanager和prometheus

添加alertmanager的服务名称

图片

添加告警规则

图片


rules.yml:|

    groups:

    - name: Host

      rules:

      - alert: HostMemory Usage

        expr: sum(kube_pod_container_resource_requests_memory_bytes) / sum(kube_node_status_allocatable_memory_bytes) * 100 >  80

        for: 1m

        labels:

          name: Memory

          team: wechat

          severity: Warning

        annotations:

          summary: " {{ $labels.appname }} "

          description: "宿主机内存使用率超过80%."

          value: "{{ $value }}"

      - alert: HostCPU Usage

        expr: sum(kube_pod_container_resource_requests_cpu_cores) / sum(kube_node_status_allocatable_cpu_cores) * 100 > 60

        for: 1m

        labels:

          name: CPU

          team: wechat

          severity: Warning

        annotations:

          summary: " {{ $labels.appname }} "

          description: "宿主机CPU使用率超过60%."

          value: "{{ $value }}"

      - alert: HostFilesystem Usage

        expr: (sum(node_filesystem_size_bytes{device!="rootfs"}) - sum(node_filesystem_free_bytes{device!="rootfs"})) / sum(node_filesystem_size_bytes{device!="rootfs"}) >  0.8

        for: 1m

        labels:

          name: Disk

          team: wechat

          severity: Warning

        annotations:

          summary: " {{ $labels.appname }} "

          description: " 宿主机 [ {{ $labels.mountpoint }} ]分区使用超过80%."

          value: "{{ $value }}%"

保存后重新启动Prometheus服务。

2、配置企业微信告警

编写告警模板

图片

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

图片

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

图片

获取api_secret和agent_id

图片

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

图片

需要报警的组,获取to_party

图片

修改prometheus-alertmanager的configmap文件

图片

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

3、配置邮件告警

修改alertmanager的configmap文件

图片

图片

如果你也在为 Kubernetes 集群监控而烦恼,可以参考一些现成的工具,比如 AlertmanagerWechat Work 插件结合,通过这些工具,你可以轻松接收来自 Prometheus 的告警信息,确保第一时间反应。

将 Prometheus 与邮箱和微信告警结合,能够让你从繁杂的日志中解放出来,快速锁定问题,提升集群运维的效率。借助这一技术,Kubernetes 集群的健康状况始终在你的掌控之中。

“监控是集群的眼睛,告警是集群的耳朵,只有眼耳兼备,才能让你在风雨中无所畏惧。”

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值