一、Prometheus
- 介绍
prometheus是一个开源的集监控和报警等多个功能于一体的开源的应用状态监控系统。prometheus会定期从指定的目标处获取应用的性能指标信息(该信息应当由应用本身发布),然后存储起来,以供查询及分析,如果您还启用了监控功能,prometheus还会使用它的Alertmamanger系统使用一定方式将告警信息发布出去。 -
应用架构图
prometheus架构图
二、Prometheus的安装及配置
- 下载地址
- 进入到prometheus的目录,打开配置文件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).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# 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: ['localhost:9090']
- job_name: 'springboot'
scrape_interval: 5s
metrics_path: "/actuator/prometheus"
static_configs:
- targets: ['localhost:8080']
scrape_config
是用来配置需要进行监控的任务(job),每个任务对应一个或多个待监控的容器,默认配置只有名为“prometheus”的任务,该任务会从目标localhost:9090/metrics
处获取发布的性能指标信息,第二个任务是我配置的,用于模拟真实环境中的一个待监控的应用,该应用是一个springboot项目,你可以从项目地址处克隆它,该应用会将相关性能指标信息发布到localhost:8080/actuactor/prometheus
三、Prometheus的简单使用
- 运行springboot项目,打开浏览器访问
localhost:8080/actuactor/prometheus
,你会看到一些具有固定格式的性能指标信息
# HELP jvm_classes_unloaded_classes_total The total number of classes unloaded since the Java virtual machine has started execution
# TYPE jvm_classes_unloaded_classes_total counter
jvm_classes_unloaded_classes_total 0.0
# HELP tomcat_sessions_active_current_sessions
# TYPE tomcat_sessions_active_current_sessions gauge
tomcat_sessions_active_current_sessions 0.0
# HELP jvm_buffer_count_buffers An estimate of the number of buffers in the pool
# TYPE jvm_buffer_count_buffers gauge
jvm_buffer_count_buffers{id="mapped",} 0.0
jvm_buffer_count_buffers{id="direct",} 1.0
# HELP jvm_gc_max_data_size_bytes Max size of old generation memory pool
# TYPE jvm_gc_max_data_size_bytes gauge
jvm_gc_max_data_size_bytes 0.0
每一种性能指标信息前面都加上了相关注释,用来告知该性能指标的类型等信息,且都有以下格式
指标名{名值对} 指标值
- 运行prometheus
$ prometheus --config.file=prometheus.yml
- prometheus基本功能
http://localhost:9090/targets
会显示prometheus监控的所有任务,并显示这些任务的状态信息,标签信息等等http://localhost:9090/config
显示prometheus的配置信息http://localhost:9090/status
显示prometheus自身的一些运行状态信息等等http://localhost:9090/graph
可以在该页面进行监控信息的查询和图标分析,在“expression”输入框输入PromQL表达式后点击“execute”就可以进行查询了,下方有“console”和“graph”两个按钮,前者显示普通的监控信息文本,后者显示图形化后数据界面
参考文档:
[1] Prometheus overview
[2] First steps with Prometheus