环境
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,配置文件内容为:
global:
resolve_timeout:2m
wechat_api_url:'https://qyapi.weixin.qq.com/cgi-bin/'
wechat_api_secret:'s6GuB1Tu7oMmnhuKULnRb4r6KwbpSOU-PxudV2iQTko'
wechat_api_corp_id:'ww7792656cb6e551b1'
route:
group_by:['alertname']
group_wait:10s
group_interval:10s
repeat_interval:1h
receiver:'wechat'
receivers:
- name:'wechat'
wechat_configs:
- send_resolved:true
to_party:'2'
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的配置文件。更改配置文件为如下(简略版):
global:
scrape_interval:15s
evaluation_interval:15s
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:['10.250.49.43:9093']
rule_files:
-"/etc/prometheus/*_rules.yml"
scrape_configs:
- job_name:'prometheus'
static_configs:
- targets:['localhost:9090']
- job_name:"qdxw-ops"
static_configs:
- targets:
-"10.250.49.8:9100"
-"10.250.49.43:9100"
- job_name:"test-paas-node"
static_configs:
- targets:
-"10.103.127.240:8079"
其中Alertmanager configuration为alertmanager的地址。
rule_files为使用的rules配置文件。
五、编写rules配置文件
编写报警的rules文件放入Prometheus配置的目录中。如下所示为jvm的简略文件:
groups:
- name: jvm-alert
rules:
# 堆空间使用超过95%
- alert: heap-usage-too-much
expr: jvm_memory_bytes_used{area="heap"}/ jvm_memory_bytes_max *100>95
for:1m
labels:
severity: critical
annotations:
summary:"JVM Instance {{ $labels.instance }} memory usage > 95%"
description:"{{ $labels.instance }} of job {{ $labels.job }} has been in status [heap usage > 95%] for more than 1 minutes. current usage ({{ $value }}%)"
# 在5分钟里,Old GC花费时间超过80%
- alert: old-gc-time-too-much
expr: increase(jvm_gc_collection_seconds_sum{gc="PS MarkSweep"}[5m])>5*60*0.8
for:5m
labels:
severity: critical
annotations:
summary:"JVM Instance {{ $labels.instance }} Old GC time > 80% running time"
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: old-gc-time-too-much-compact
expr: increase(jvm_gc_collection_seconds_sum{gc="MarkSweepCompact"}[5m])>5*60*0.8
for:5m
labels:
severity: critical
annotations:
summary:"JVM Instance {{ $labels.instance }} Old GC time > 80% running time"
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%。
根据这些可以完全了解报警内容,其他内容可以忽略。
相关推荐
- **接入流程**:项目可能需要注册企业微信应用,获取AppID和AppSecret,然后实现OAuth2.0授权流程,获取用户信息。 - **打卡API**:企业微信提供打卡相关的API,包括打卡记录查询、设置打卡规则等,项目需要调用...
本项目"Java基于企业微信的身份认证平台设计与实现"旨在构建一个利用企业微信API进行用户验证和授权的系统,以提升企业内部系统的安全性和用户体验。以下是该平台设计与实现的核心知识点: 1. **企业微信API集成**...
### 脚本部分介绍 - 运行之前先查看脚本,修改一下Basrdir的路径为你想安装的路径 - 把这个项目拷贝,记得是"拷贝"到Basedir...部署Prometheus、node_exporter、grafana、alertmanager Prometheus -----数据采集 ```
Prometheus+Grafana企业级监控实战 Prometheus 是一个开源的监控系统,提供了强大的监控和报警功能。它可以实时地监控系统的性能和状态,并提供了灵活的报警机制。Grafana 是一个开源的数据可视化平台,提供了丰富...
总之,这份“prometheus监控redis和报警规则详细资料”提供了全面的指导,涵盖了从安装到监控再到报警的整个流程,是学习和实践Prometheus监控Redis的宝贵资源。通过深入理解和实践,你将能够有效地利用Prometheus...
【SpringBoot 企业微信点餐系统实战项目代码】 在当今数字化时代,企业微信点餐系统已经成为餐饮行业提高效率、优化客户体验的重要工具。本项目基于SpringBoot框架,结合企业微信API,实现了一套完整的点餐解决方案...
本资料包提供了一套详尽的Prometheus监控MySQL以及设置报警规则的方法。 一、Prometheus监控MySQL原理 Prometheus通过其服务发现机制来找到MySQL实例,然后通过导出器(如`mysqld_exporter`)将MySQL的指标暴露出来...
第十七章“prometheus发送微信报警”涉及了Prometheus的警报管理,介绍了如何配置Prometheus规则文件以触发报警,并将报警信息发送至微信,提升实时监控的响应效率。 第六章“prometheus监控node节点-服务发现”则...
支持邮件 短信 企业微信报警 配置之间用服务树方式展现 报警历史记录查询 报警静默配置 此平台优点: 支持用户组管理 通过服务树,清晰的展示数据源 报警规则 报警附属配置之间的关系 支持静默配置 支持自定义报警...
Prometheus 和 Loki 的告警配置 Prometheus 和 Loki 是两个 популяр的监控和日志管理工具,经常被用于大规模分布式系统的监控和告警。在这篇文章中,我们将讨论如何配置 Prometheus 和 Loki 的告警系统,...
【Python微信个人号社群营销管理系统】是利用Python技术构建的一款高效、便捷的Web应用程序,旨在帮助企业或个人更好地管理和运营微信个人号社群。该系统通过Web界面提供了一系列功能,包括但不限于消息自动化、用户...
接下来,我们关注Python调用Prometheus API的部分。`prometheus_api.py`这个文件很可能是实现这一功能的代码。Python有多个库可以与Prometheus交互,如`prometheus_client`和`prometheus_client_python`。这些库允许...
Prometheus是一款强大的开源监控系统和时间序列数据库,广泛应用于微服务架构中的监控。它提供了丰富的数据API,允许用户通过HTTP接口获取存储的度量数据。本文将深入探讨如何使用Python来调用Prometheus的数据API,...
1. **编写报警规则**:在Prometheus配置文件中定义报警规则。 2. **配置Alertmanager**:配置Alertmanager以接收来自Prometheus的报警信号,并定义通知策略。 3. **测试报警**:通过模拟异常情况测试报警系统是否按...
Prometheus 基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供 HTTP 接口就可以接入监控系统,不需要任何 SDK 或者其他的集成过程。这样做非常适合虚拟化环境比如 VM 或者 ...
监控系统需要具备报警功能,实现报警分级管理,包括一级报警电话通知,二级报警微信通知,以及三级报警邮件通知。监控系统的目的在于提供依据,以便于数据优化和故障排查。 在项目选型时,有很多监控系统可供选择,...
Alertmanager还负责处理重复告警、抑制告警以及通过多种方式如Email、企业微信、Slack或Webhook发送告警信息。 Prometheus还支持对容器的监控。它能够监控容器编排平台如Kubernetes和Docker Swarm,以及具体的容器...
Prometheus、Alertmanager、Grafana以及钉钉告警是监控和报警系统的关键组件,尤其在 Kubernetes (k8s) 集群环境中。这个手动部署包提供了在 Kubernetes 上搭建这套系统的 YAML 文件,使得用户可以方便地应用配置,...
Prometheus 是一个开源的监控和警报系统,广泛应用于云原生环境,它以其强大的时序数据处理能力和灵活的查询语言 Prometheus Query Language ( PromQL ) 而闻名。本篇文章将详细探讨如何通过 Prometheus 的 API 进行...
第七讲中,作者介绍了Prometheus的企业级实际使用,包括如何在企业中实际使用Prometheus来监控和报警。 第八讲中,作者介绍了Alertmanager的使用和结合,包括如何使用Alertmanager来报警和通知。 第九讲中,作者...