微服务的监控并实现钉钉图文告警

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介: 微服务使用Prometheus+Grafana方式实现监控的文章比较多,本文主要侧重如何实现即时的钉钉告警通知,并能够在通知消息中显示告警图片

为了比较方便统计微服务服务器基础指标和相关运行状态,目前比较流行和成熟的方案是采用Prometheus+Grafana。本文主要基于docker的方式,快速搭建一套监控体系。

  1. 应用改造

为了整合Prometheus,需要在微服务应用中增加micrometer-registry-prometheus依赖:

<!-- Micrometer Prometheus registry  -->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

配置中打开端点/actuator/prometheus

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS
  metrics:
    tags:
      application: ${spring.application.name}
  1. 启动prometheus

运行prometheus容器:

$ docker run -d --name=prometheus -p 9090:9090 -v /docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:v2.16.0 --config.file=/etc/prometheus/prometheus.yml

其中映射到主机的配置文件prometheus.yml的配置如下:

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
# rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
      - targets: ['127.0.0.1:9090']

  - job_name: 'nacos-prometheus'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 15s
    consul_sd_configs:
      - server: '192.168.0.102:7000'
        services: []
  1. 启动Grafana

使用以下命令可以使Docker下载和运行Grafana:

$ docker run -d --name=grafana -p 3000:3000 grafana/grafana

为了能让Grafana的面板嵌入到应用中,需要更改配置
以root用户进入容器中

$ docker exec -u root -it grafana sh
# vi conf/defaults.ini

image.png
image.png

  1. 导入模版

使用dashboard模版,可以减少定制的时间。官网的dashboard广场,有很多现成的:
https://grafana.com/grafana/dashboards
在Grafana的面板中点击菜单Import:

image.png
从官网dashboard广场获取面板ID:
image.png

此处粘贴入模版ID:
image.png

微服务应用,推荐使用4701

  1. 将Grafana嵌入自己的应用页面

dashboard 和 panel都可以分享,如图点击share:
image.png
弹出的对话框中,可以自定义一些参数
image.png

分享出来的链接加入kiosk=tv参数还可以隐藏面板的左边菜单和上面标题栏。然后就可以用iframe标签嵌入到前端页面里去了。

  1. 告警配置

如需告警,则需要把配置文件中的这个地址改下,否则docker里的会是错误的
image.png
在Grafana的Alert面板中,可以根据需要配置告警的一些参数,如监测频率等

image.png

  1. 生成图文告警

首先在Grafana的Notification channels面板中配置告警通道:
image.png
有2个参数必须注意,Url填入告警分发的钉钉机器人的webhook。如何添加群机器人并获得webkook,请参考钉钉官网https://ding-doc.dingtalk.com/doc#/serverapi2/krgddi。此外,要注意勾选 Include image 选项。
配置好后,Grafana的告警图表还需要一个外部的图像渲染服务。我们依然使用docker来创建并启动此服务,
新建容器并对外开放8081端口:

$ docker run -d --name=grafana-image-renderer -p 8081:8081 --env GF_RENDERER_PLUGIN_TZ=Asia/Shanghai --env GF_RENDERER_PLUGIN_IGNORE_HTTPS_ERRORS=true grafana/grafana-image-renderer

进入容器中修改配置文件 /conf/defaults.ini

[rendering]
# 这里指定使用外部图像渲染,指向刚建立的容器 /render 路径不可少
server_url = http://192.168.0.102:8081/render
# If the remote HTTP image renderer service runs on a different server than the
callback_url = http://192.168.0.102:3000

还有:

[external_image_storage]
# 使用s3协议
provider = s3
[external_image_storage.s3]
# 这个链接必须要能连通互联网,否则图像能生成,但会无法访问
endpoint = http://www.xxx.com
# 这个参数必须设置成true,否则下面的bucket参数会加在上面endpoint最前面,导致访问不了,会变成 http://mybucket.www.xxx.com
path_style_access = true
# 不要配置
bucket_url =
bucket = mybucket
# minIO默认的region是us-east-1
region = us-east-1
path = images
access_key = AKIAIOSFODNN7EXAMPLE
secret_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY中的

我们用的是本地的minIO作为图像生成的存储服务。当然用阿里云的OSS应该也是没有问题的。

通过以上的配置,当Grafana监测到系统指标超过告警阀值,则就会向钉钉发送图文消息
image.png

目录
相关文章
|
2月前
|
Prometheus 监控 Java
日志收集和Spring 微服务监控的最佳实践
在微服务架构中,日志记录与监控对系统稳定性、问题排查和性能优化至关重要。本文介绍了在 Spring 微服务中实现高效日志记录与监控的最佳实践,涵盖日志级别选择、结构化日志、集中记录、服务ID跟踪、上下文信息添加、日志轮转,以及使用 Spring Boot Actuator、Micrometer、Prometheus、Grafana、ELK 堆栈等工具进行监控与可视化。通过这些方法,可提升系统的可观测性与运维效率。
309 1
日志收集和Spring 微服务监控的最佳实践
|
3月前
|
存储 Prometheus 监控
从入门到实战:一文掌握微服务监控系统 Prometheus + Grafana
随着微服务架构的发展,系统监控变得愈发重要。本文介绍如何利用 Prometheus 和 Grafana 构建高效的监控系统,涵盖数据采集、存储、可视化与告警机制,帮助开发者提升系统可观测性,及时发现故障并优化性能。内容涵盖 Prometheus 的核心组件、数据模型及部署方案,并结合 Grafana 实现可视化监控,适合初学者和进阶开发者参考实践。
565 6
|
2月前
|
监控 Kubernetes Java
使用 New Relic APM 和 Kubernetes Metrics 监控 EKS 上的 Java 微服务
在阿里云AKS上运行Java微服务常遇性能瓶颈与OOMKilled等问题。本文教你通过New Relic实现集群与JVM双层监控,集成Helm部署、JVM代理注入、GC调优及告警仪表盘,打通从节点资源到应用内存的全链路观测,提升排障效率,保障服务稳定。
192 1
|
4月前
|
存储 监控 Shell
SkyWalking微服务监控部署与优化全攻略
综上所述,虽然SkyWalking的初始部署流程相对复杂,但通过一步步的准备和配置,可以充分发挥其作为可观测平台的强大功能,实现对微服务架构的高效监控和治理。尽管未亲临,心已向往。将一件事做到极致,便是天分的展现。
|
6月前
|
运维 监控 网络协议
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
212 11
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
|
5月前
|
编解码 监控 算法
CDN+OSS边缘加速实践:动态压缩+智能路由降低30%视频流量成本(含带宽峰值监控与告警配置)
本方案通过动态压缩、智能路由及CDN与OSS集成优化,实现视频业务带宽成本下降31%,首帧时间缩短50%,错误率降低53%。结合实测数据分析与架构创新,有效解决冷启动延迟、跨区域传输及设备适配性问题,具备快速投入回收能力。
357 0
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
1141 3
|
8月前
|
数据采集 运维 监控
数据采集监控与告警:错误重试、日志分析与自动化运维
本文探讨了数据采集技术从“简单采集”到自动化运维的演进。传统方式因反爬策略和网络波动常导致数据丢失,而引入错误重试、日志分析与自动化告警机制可显著提升系统稳定性与时效性。正方强调健全监控体系的重要性,反方则担忧复杂化带来的成本与安全风险。未来,结合AI与大数据技术,数据采集将向智能化、全自动方向发展,实现动态调整与智能识别反爬策略,降低人工干预需求。附带的Python示例展示了如何通过代理IP、重试策略及日志记录实现高效的数据采集程序。
408 7
数据采集监控与告警:错误重试、日志分析与自动化运维
|
8月前
|
Prometheus Kubernetes 监控
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
471 22
|
11月前
|
Prometheus 监控 Cloud Native
无痛入门Prometheus:一个强大的开源监控和告警系统,如何快速安装和使用?
Prometheus 是一个完全开源的系统监控和告警工具包,受 Google 内部 BorgMon 系统启发,自2012年由前 Google 工程师在 SoundCloud 开发以来,已被众多公司采用。它拥有活跃的开发者和用户社区,现为独立开源项目,并于2016年加入云原生计算基金会(CNCF)。Prometheus 的主要特点包括多维数据模型、灵活的查询语言 PromQL、不依赖分布式存储、通过 HTTP 拉取时间序列数据等。其架构简单且功能强大,支持多种图形和仪表盘展示模式。安装和使用 Prometheus 非常简便,可以通过 Docker 快速部署,并与 Grafana 等可
5850 2

热门文章

最新文章