docker - prometheus+grafana 监控并集成到spring boot微服务中
1、普罗米修斯介绍
Prometheus,中文名普罗米修斯,灵感来自谷歌的Brogmon监控系统。从2012年开始由Soundcloud的前谷歌工程师以开源软件的形式开发。2016年6月发布了1.0版本。Prometheus可以看作是谷歌内部监控系统Borgmon的实现。
下图说明了 Prometheus 的架构及其一些生态系统组件。 Alertmanager 用于告警,Grafana 用于监控数据可视化,后面会提到。
在这里我们可以了解到Prometheus的特点:
1.一个数据收集器,它以配置的时间间隔定期传递 HTTP 提取指标数据。
2.一个时间序列数据库,用于存储所有指标数据。
3.一个简单的用户界面,您可以在其中可视化、查询和监控所有指标。
zoz100003 2、Grafana简介
Grafana 是一个用 Go 语言编写的开源应用程序,它可以让你从 Elasticsearch、Prometheus、Graphite 和 InfluxDB 等各种数据源中获取数据,并通过精美的图形将其可视化。
除了 Prometheus AlertManager 发送告警外,grafana 还支持告警。 Grafana可以无缝定义报警在数据中的位置,可视化定义阈值,通过钉钉、邮件等平台获取报警通知。最重要的是直观地定义报警规则,持续评估并发送通知。
由于 Grafana alert 告警比较弱,所以大部分告警都是通过 Prometheus alert manager 发送的
请注意,Prometheus 仪表板也有简单的图形。但 Grafana 的图形要好得多。
3、Alertmanager简介
Prometheus监控平台除了采集数据和存储外,还可以自定义事件规则,但是这些事件规则需要配合Alertmanager组件完成,才能实现告警通知。
AlertManager 支持告警分组(多条告警一起发送)、告警抑制和告警静音(同一时间段内不重复发送告警)。
4、监控Java应用
显示器型号
目前监控系统采集指标有两种方式,一种是“推”,一种是“拉”:
推送代表包括ElasticSearch、InfluxDB、OpenTSDB等,需要通过TCP、UDP等方式将程序中的指标推送到相关监控应用,如果只使用TCP,一旦监控应用挂掉或者出现瓶颈,很容易对应用程序本身产生影响。如果使用UDP,就不用担心监控应用,但是很容易丢失数据。
La的主要代表是Prometheus,所以我们不用担心监控应用程序本身的状态。此外,可以通过使用DNS-SRV或咨询等服务发现功能自动添加监控。
如何监控
Prometheus 监控应用程序的方式非常简单。只需要进程暴露一个用于获取当前监控样本数据的HTTP访问地址即可。这样的程序称为Exporter,Exporter 的实例称为Target。 Prometheus 通过轮换训练,定期从这些目标中获取监测数据样本。对于应用来说,只需要暴露一个包含监控数据的HTTP访问地址。当然,提供的数据需要满足一定的格式,也就是Metrics格式
指标名称>{<标签名称>u003d<标签值>, ...}
主要分为三个部分
每个部分都必须符合相关的正则表达式
1.metric name:指标名称主要体现被监测样本的含义a-zA-Z_:*_
2.label name:标签反映当前样本的特征维度[a-zA-Z0-9_]*
3.label value:每个label的值,不限制格式
需要注意的是,标签值最好使用枚举值而不是无限值,比如用户ID、Email等,否则会消耗大量内存,不符合索引收集的意义。
5、MicroMeter简介
Prometheus监控的原理前面已经简单介绍过了。那么我们的 Spring Boot 应用怎么能提供这样的 HTTP 访问地址,而且提供的数据必须符合上面的 Metrics 格式呢?
请记住,在 Spring Boot Actuator 模块的详细说明:健康检查、测量、指标收集和监控中,我提到了 Actuator 模块还可以与一些外部应用程序监控系统集成,包括 Prometheus。那么 Spring Boot Actuator 是如何将 Spring Boot 应用与 Prometheus 监控系统结合起来的呢?
这个桥是千分尺。 Micrometer 为 Java 平台上的性能数据收集提供了通用 API。应用程序只需要使用 micrometer 的通用 API 即可收集性能指标。 Micrometer 将负责完成与不同监控系统的适配。
6、安装docker Prometheus、docker grafana和服务器监控docker node exporter
下载镜像包
码头工人拉舞会/普罗米修斯
码头工人拉格拉法纳/格拉法纳
搬运工拉舞会/节点出口商
prometheus启动前的准备工作
mkdir /opt/prometheus
触摸 /opt/prometheus.yml
cd /opt/普罗米修斯
vim prometheus.yml
prometheus配置文件如下
全球:
scrape_interval: 60s
评估_interval:60s
刮_configs:
- 工作_name:普罗米修斯
静态_配置:
- 目标:['xxx.xxx.xxx.xxx:9300']
标签:
实例:普罗米修斯
- 工作_名称:linux
静态_配置:
- 目标:['xxx.xxx.xxx.xxx:9200']
标签:
实例:本地主机
- 工作_名称:网络
指标_path: '/actuator/prometheus'
scrape_interval: 5s
静态_配置:
- 目标:['xxx.xxx.xxx.xxx:19007']
标签:
实例:本地网络
其中9300是prometheus
9200是node exporter监控服务器的程序
19007是测试地址,metrics_path是自定义拉取数据的地址
启动grafana前的准备工作
mkdir /opt/grafana-存储
chmod 777 -R /opt/grafana-storage
开机
可视化如下
节点导出器启动
docker run -d -p 9200:9100 --nameu003dnode-exporter -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs :ro" 舞会/节点出口商
访问端口 9200
普罗米修斯开始
docker run -d --nameu003dprometheus -p 9300:9090 -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
访问端口 9300
格拉法纳开始
docker run -d -p 9400:3000 --nameu003dgrafana -v /opt/grafana-storage:/var/lib/grafana grafana/grafana
访问端口 9400
使用grafana
创建数据源
配置视图
7、spring boot 集成prometheus
引入依赖
<依赖>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</依赖>
<!-- Micrometer Prometheus 注册表 -->
<依赖>
<groupId>io.micrometer</groupId>
<artifactId>微米注册表-prometheus</artifactId>
</依赖>
yml配置
#管理--> 单机监控项目地址/prometheus的metrics配置访问路径
管理:
指标:
粘合剂:
虚拟机:
启用:假
文件:
启用:假
整合:
启用:假
回退:
启用:假
处理器:
启用:假
正常运行时间:
启用:假
端点:
网络:
曝光:
包括:[“普罗米修斯”]
基本路径:“/”
访问
19007以上端口的Prometheus用于YML配置中的测试访问地址
下面是得到的指标
grafana 官方JVM视图模板
现在它离线了。 19007测试地址上线后,Prometheus会出现在YML配置最上面的web测试选项
数据显示在此视图中
更多推荐
所有评论(0)