`
lvjun106
  • 浏览: 438128 次
  • 性别: Icon_minigender_1
  • 来自: 芜湖
社区版块
存档分类
最新评论

Prometheus接入企业微信报警

 
阅读更多

环境

Prometheus:paas平台搭建;
grafana: paas平台搭建;
alertmanager:虚拟机docker环境搭建;
企业微信管理平台:https://work.weixin.qq.com/wework_admin/frame#contacts 企业微信或者微信扫码登陆; https://work.weixin.qq.com/wework_admin/loginpage_wx
其他java进程和虚拟机环境:被监控对象。

工具介绍

Prometheus:Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker,Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。
grafana:grafana是一个开源的可视化监控及数据展示分析工具。它有快速灵活的多种图表,支持多达54种数据源如Prometheus,mysql,es等;
alertmanager:是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。
企业微信管理平台:企业微信支持多种接口,其中Prometheus的接口可以直接通过模板对接,非常方便不需要开发进行二次开发;

大致步骤

1.利用JMX exporter和javagent,在Java进程内启动一个小型的Http server
2.配置Prometheus抓取那个Http server提供的metrics。
3.配置Prometheus的告警触发规则,例如:
heap使用超过最大上限的50%、80%、90%
instance down机时间超过30秒、1分钟、5分钟
old gc时间在最近5分钟里超过50%、80%
4.配置Grafana连接Prometheus,配置Dashboard
5.配置Alertmanager的告警通知规则

配置过程

一、基础配置

在paas平台上搭建好Prometheus及grafana,直接使用准备好的镜像启动,启动完毕后更改配置文件,数据展示到grafana

二、注册一个企业微信

企业微信官网注册一个企业微信,注册后打开管理后台,需要其中几个信息;在应用管理中,自建一个应用,此处名叫Prometheus,如图secret和agentid两项需要使用,可见范围可自己定义能接收到消息的群组;

点击上方通讯录,左侧的部门列表中,可以查看部门id,也是需要的,如图所示:

三、配置alertmanager

因为paas资源不够,在虚拟机上搭建此插件,从dockerhub下载alertmanager的官方镜像。 docker pull prom/alertmanager:master ;此镜像需要改动一个配置文件,配置文件需要映射到虚拟机上,设定位置为/etc/alertmanager/alertmanager.yml,配置文件内容为:

  1. global:
  2. resolve_timeout:2m
  3. wechat_api_url:'https://qyapi.weixin.qq.com/cgi-bin/'
  4. wechat_api_secret:'s6GuB1Tu7oMmnhuKULnRb4r6KwbpSOU-PxudV2iQTko'
  5. wechat_api_corp_id:'ww7792656cb6e551b1'
  6. route:
  7. group_by:['alertname']
  8. group_wait:10s
  9. group_interval:10s
  10. repeat_interval:1h
  11. receiver:'wechat'
  12. receivers:
  13. - name:'wechat'
  14. wechat_configs:
  15. - send_resolved:true
  16. to_party:'2'
  17. agent_id:'1000002'

其中,wechat_api_url固定值,wechat_api_secret和agent_id如图一。wechat_api_corp_id为企业id,位置在我的企业,下拉最下方,若没有出现,等待一段时间刷新或者重新登陆即可,如图:

to_party为部门id,需要发送至哪个部门或者说群组;此处的范围需要小于等于在应用中配置的可见范围。
配置完毕以上内容后,启动alertmanager: docker run —name alertmanager -d -p 9093:9093 -v /etc/alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml prom/alertmanager:master
展示端口为9093,启动完毕后可以在页面端查看,页面如图

报警内容的发送会在红框范围下展示,处理完毕或恢复的报警,信息会消失,如不处理则一直存在;

四、配置Prometheus对接alertmanager插件

在paas平台中的配置文件里,找到Prometheus的配置文件。更改配置文件为如下(简略版):

  1. global:
  2. scrape_interval:15s
  3. evaluation_interval:15s
  4. # Alertmanager configuration
  5. alerting:
  6. alertmanagers:
  7. - static_configs:
  8. - targets:['10.250.49.43:9093']
  9. rule_files:
  10. -"/etc/prometheus/*_rules.yml"
  11. scrape_configs:
  12. - job_name:'prometheus'
  13. static_configs:
  14. - targets:['localhost:9090']
  15. - job_name:"qdxw-ops"
  16. static_configs:
  17. - targets:
  18. -"10.250.49.8:9100"
  19. -"10.250.49.43:9100"
  20. - job_name:"test-paas-node"
  21. static_configs:
  22. - targets:
  23. -"10.103.127.240:8079"

其中Alertmanager configuration为alertmanager的地址。
rule_files为使用的rules配置文件。

五、编写rules配置文件

编写报警的rules文件放入Prometheus配置的目录中。如下所示为jvm的简略文件:

  1. groups:
  2. - name: jvm-alert
  3. rules:
  4. # 堆空间使用超过95%
  5. - alert: heap-usage-too-much
  6. expr: jvm_memory_bytes_used{area="heap"}/ jvm_memory_bytes_max *100>95
  7. for:1m
  8. labels:
  9. severity: critical
  10. annotations:
  11. summary:"JVM Instance {{ $labels.instance }} memory usage > 95%"
  12. description:"{{ $labels.instance }} of job {{ $labels.job }} has been in status [heap usage > 95%] for more than 1 minutes. current usage ({{ $value }}%)"
  13. # 在5分钟里,Old GC花费时间超过80%
  14. - alert: old-gc-time-too-much
  15. expr: increase(jvm_gc_collection_seconds_sum{gc="PS MarkSweep"}[5m])>5*60*0.8
  16. for:5m
  17. labels:
  18. severity: critical
  19. annotations:
  20. summary:"JVM Instance {{ $labels.instance }} Old GC time > 80% running time"
  21. description:"{{ $labels.instance }} of job {{ $labels.job }} has been in status [Old GC time > 80% running time] for more than 5 minutes. current seconds ({{ $value }}%)"
  22. - alert: old-gc-time-too-much-compact
  23. expr: increase(jvm_gc_collection_seconds_sum{gc="MarkSweepCompact"}[5m])>5*60*0.8
  24. for:5m
  25. labels:
  26. severity: critical
  27. annotations:
  28. summary:"JVM Instance {{ $labels.instance }} Old GC time > 80% running time"
  29. description:"{{ $labels.instance }} of job {{ $labels.job }} has been in status [Old GC time > 80% running time] for more than 5 minutes. current seconds ({{ $value }}%)"

其中alert为报警名或者说项目名;
expr为语法,此语法可以在Prometheus的页面中进行尝试,如图所示

Prometheus有大量的报警规则可以自定义,其中需要内容可以在每个项目启动的javagent和虚拟机的node_exporter的页面中查看,取其中的数值进行自定义即可。如图为一台虚拟机的node_exporter的内容:

继续,在rules文件中:for为持续时间,上面显示的就为连续的5分钟内堆内存使用超过百分之95;
labels包含报警严重性等的定义或分级;
annotations包含描述等;

六、报警测试

以上步骤都完成后,可以进行报警测试。
基本每次报警都有两条,其中一条为FIRING,是故障提醒;一条为RESOLVED,为故障恢复提醒。
下图为报警内容,需要关注的点有三个,首先为故障原因,下图为heap-usage-too-much;第二个是报警的项目,surveytool-admin为调查问卷后台管理;第三点为ip和具体内容,ip就是,具体内容为memory usage > 95%。
根据这些可以完全了解报警内容,其他内容可以忽略。

分享到:
评论

相关推荐

    企业微信打卡vue+flask项目.zip

    - **接入流程**:项目可能需要注册企业微信应用,获取AppID和AppSecret,然后实现OAuth2.0授权流程,获取用户信息。 - **打卡API**:企业微信提供打卡相关的API,包括打卡记录查询、设置打卡规则等,项目需要调用...

    Java基于企业微信的身份认证平台设计与实现.zip

    本项目"Java基于企业微信的身份认证平台设计与实现"旨在构建一个利用企业微信API进行用户验证和授权的系统,以提升企业内部系统的安全性和用户体验。以下是该平台设计与实现的核心知识点: 1. **企业微信API集成**...

    Prometheus的监控及docker监控插件、微信报警、内有使用文档

    ### 脚本部分介绍 - 运行之前先查看脚本,修改一下Basrdir的路径为你想安装的路径 - 把这个项目拷贝,记得是"拷贝"到Basedir...部署Prometheus、node_exporter、grafana、alertmanager Prometheus -----数据采集 ```

    prometheus+granfana企业级监控实战v5.pdf

    Prometheus+Grafana企业级监控实战 Prometheus 是一个开源的监控系统,提供了强大的监控和报警功能。它可以实时地监控系统的性能和状态,并提供了灵活的报警机制。Grafana 是一个开源的数据可视化平台,提供了丰富...

    prometheus监控redis和报警规则详细资料—超级详细(带文档和软件包)

    总之,这份“prometheus监控redis和报警规则详细资料”提供了全面的指导,涵盖了从安装到监控再到报警的整个流程,是学习和实践Prometheus监控Redis的宝贵资源。通过深入理解和实践,你将能够有效地利用Prometheus...

    prometheus和loki的告警配置

    Prometheus 和 Loki 的告警配置 Prometheus 和 Loki 是两个 популяр的监控和日志管理工具,经常被用于大规模分布式系统的监控和告警。在这篇文章中,我们将讨论如何配置 Prometheus 和 Loki 的告警系统,...

    SpringBoot 企业微信点餐系统实战项目代码.zip

    【SpringBoot 企业微信点餐系统实战项目代码】 在当今数字化时代,企业微信点餐系统已经成为餐饮行业提高效率、优化客户体验的重要工具。本项目基于SpringBoot框架,结合企业微信API,实现了一套完整的点餐解决方案...

    prometheus监控mysql和报警规则详细资料—超详细,超全面(带文档和相关软件包)

    本资料包提供了一套详尽的Prometheus监控MySQL以及设置报警规则的方法。 一、Prometheus监控MySQL原理 Prometheus通过其服务发现机制来找到MySQL实例,然后通过导出器(如`mysqld_exporter`)将MySQL的指标暴露出来...

    prometheus课件.rar

    第十七章“prometheus发送微信报警”涉及了Prometheus的警报管理,介绍了如何配置Prometheus规则文件以触发报警,并将报警信息发送至微信,提升实时监控的响应效率。 第六章“prometheus监控node节点-服务发现”则...

    prometheus web管理平台

    支持邮件 短信 企业微信报警 配置之间用服务树方式展现 报警历史记录查询 报警静默配置 此平台优点: 支持用户组管理 通过服务树,清晰的展示数据源 报警规则 报警附属配置之间的关系 支持静默配置 支持自定义报警...

    Prometheus从入门到精通-玩转Prometheus

    1. **编写报警规则**:在Prometheus配置文件中定义报警规则。 2. **配置Alertmanager**:配置Alertmanager以接收来自Prometheus的报警信号,并定义通知策略。 3. **测试报警**:通过模拟异常情况测试报警系统是否按...

    Python-一款通过Web的方式进行微信个人号社群营销管理系统

    【Python微信个人号社群营销管理系统】是利用Python技术构建的一款高效、便捷的Web应用程序,旨在帮助企业或个人更好地管理和运营微信个人号社群。该系统通过Web界面提供了一系列功能,包括但不限于消息自动化、用户...

    Python调用Prometheus监控数据并计算.zip

    接下来,我们关注Python调用Prometheus API的部分。`prometheus_api.py`这个文件很可能是实现这一功能的代码。Python有多个库可以与Prometheus交互,如`prometheus_client`和`prometheus_client_python`。这些库允许...

    Prometheus数据API导出Python脚本(export Prometheus metric data by http api)

    Prometheus是一款强大的开源监控系统和时间序列数据库,广泛应用于微服务架构中的监控。它提供了丰富的数据API,允许用户通过HTTP接口获取存储的度量数据。本文将深入探讨如何使用Python来调用Prometheus的数据API,...

    Prometheus 实战.pdf

    Alertmanager还负责处理重复告警、抑制告警以及通过多种方式如Email、企业微信、Slack或Webhook发送告警信息。 Prometheus还支持对容器的监控。它能够监控容器编排平台如Kubernetes和Docker Swarm,以及具体的容器...

    完结12章高薪运维必备Prometheus监控系统企业级实战

    Prometheus 基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供 HTTP 接口就可以接入监控系统,不需要任何 SDK 或者其他的集成过程。这样做非常适合虚拟化环境比如 VM 或者 ...

    Prometheus监控系统.pdf

    监控系统需要具备报警功能,实现报警分级管理,包括一级报警电话通知,二级报警微信通知,以及三级报警邮件通知。监控系统的目的在于提供依据,以便于数据优化和故障排查。 在项目选型时,有很多监控系统可供选择,...

    prometheus上篇PDF

    第七讲中,作者介绍了Prometheus的企业级实际使用,包括如何在企业中实际使用Prometheus来监控和报警。 第八讲中,作者介绍了Alertmanager的使用和结合,包括如何使用Alertmanager来报警和通知。 第九讲中,作者...

    prometheus + alertmanager + grafana +钉钉告警 动部署包

    Prometheus、Alertmanager、Grafana以及钉钉告警是监控和报警系统的关键组件,尤其在 Kubernetes (k8s) 集群环境中。这个手动部署包提供了在 Kubernetes 上搭建这套系统的 YAML 文件,使得用户可以方便地应用配置,...

    prometheus-api数据采集

    Prometheus 是一个开源的监控和警报系统,广泛应用于云原生环境,它以其强大的时序数据处理能力和灵活的查询语言 Prometheus Query Language ( PromQL ) 而闻名。本篇文章将详细探讨如何通过 Prometheus 的 API 进行...

Global site tag (gtag.js) - Google Analytics