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测试选项

数据显示在此视图中

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐