简介
Prometheus 是最初在 SoundCloud 上构建的开源系统监视和警报工具包 。自 2012 年成立以来,许多公司和组织都采用了 Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立于任何公司进行维护。为了强调这一点并阐明项目的治理结构,Prometheus 在 2016 年加入了 Cloud Native Computing Foundation,这是继 Kubernetes 之后的第二个托管项目。总所周知 Zabbix 在监控界占有不可撼动的地位,功能强大。但是对容器监控显得力不从心。Prometheus 则解决了容器的监控问题。
特点
- 多维度数据模型
- 灵活的查询语言
- 不依赖分布式存储
- 通过基于 HTTP 的 pull 方式采集时序数据
- 可以通过中间网关进行时序列数据推送
- 通过服务发现或者静态配置来发现目标服务对象
- 支持主流的图表和界面展示,如 Grafana 等
运行流程图
Prometheus 采集的监控数据均以 metric(指标)形式保存在时序数据库中(TSDB),每一条时间序列由 metric 和 labels 组成,每条时间序列按照时间的先后顺序存储它的样本值。
Prometheus 通过 HTTP 协议周期性抓取被监控组件的状态,被监控组件只要提供对应的 HTTP 接口就可以接入监控。不需要任何 SDK 或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如 V m、Docker、Kubernetes 等。
环境准备
1 | Prometheus下载地址:https://prometheus.io/download |
1 | 此处以CentOS 7为例 |
完成上述操作并成功启动 Prometheus 服务后可打开浏览器尝试访问,http://ip:9090 (IP 为部署的服务器 ip,本机部署则直接 127.0.0.1),如果顺利的话你将访问到如下页面
管理页面简介
Alert:用于配置告警规则
Graph:用来运行 PromQL 语句的一个控制台,并且可以把运行出来的语句用用图形化进行展示
Status:包含系统信息,系统状态,配置信息,目标节点的状态,服务发现状态等元信息的查看
Prometheus 整体架构及生态
这张图是官方的整体架构图。米黄色部分是 Prometheus 自己的组件,绿色的为第三方的中间件和应用。
模拟数据源
Prometheus 主要是通过拉取的方式获取数据,那么我们模拟一个数据源,并让 prometheus 去拉取。
先新建一个 SpringBoot 项目,并添加如下 pom 依赖
1 | <dependency> |
并在 application.properties 里加上
1 | server.port=8080 |
management.endpoints.web.exposure.include=* 配置为开启 Actuator 服务,Spring Boot Actuator 会自动配置一个 URL 为 /actuator/Prometheus 的 HTTP 服务来供 Prometheus 抓取数据,不过该服务默认关闭,该配置将打开所有的 Actuator 服务。
management.metrics.tags.application 配置会将该工程应用名称添加到计量器注册表的 tag 中去,方便后边 Prometheus 根据应用名称来区分不同的服务。
在工程启动类中添加如下 Bean 来监控 JVM 性能指标信息
1 |
|
在启动 SpringBoot 工程后,在浏览器访问 http://127.0.0.1:8080/actuator/prometheus ,如果服务正常,你将会看到如下内容
配置 Prometheus
编辑 Prometheus 目录下的 prometheus.yml 文件,并添加如下内容(需要遵循 yaml 语法,注意缩进)
1 | - job_name: "test" |
上面的配置表示 Prometheue 每隔 5 秒钟从 http://192.168.80.52:8080/actuator/prometheus 这个 url 拉取指标,并且为每个指标添加 instance 里设置的这个标签。
配置完成后重启 Prometheue 服务,并访问 Prometheue Web 控制台的 Staus 下的 targets,查看 Targets 是否添加成功,如果数据拉取正常,则 State 为 UP 状态
指标 Key 查询测试
Grafana 安装
1 | 编辑Grafana yum源 |
Grafana 数据展示
安装完成后访问 http://ip:3000 即可打开 Grafana 登录页面
默认账号与密码均为 admin,首次登录需要重设密码
添加数据源
导入模板
导入 JVM 的 Dashboard 模板,模板编号为 4701
End
- 本文链接: https://mikuac.com/prometheus/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。