Prometheus为一个监控工具,主要模式为pull。
Prometheus 可以从配置或者用服务发现,去调用各个应用的 metrics接口,来采集数据,然后存储在硬盘中,而如果是基础应用比如数据库,负载均衡器等,可以在相关的服务中安装 Exporters 来提供 metrics 接口供 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.
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'gitlab'
static_configs:
- targets: ['x.x.x.x:9273']
- job_name: 'confluence'
metrics_path: '/plugins/servlet/prometheus/metrics'
params:
token: ['TOKEN']
static_configs:
- targets: ['x.x.x.x:8090']
- job_name: 'es'
file_sd_configs:
- files:
- /data/soft/prometheus/config/es.json
prometheus/config/es.json:
[
{
"targets": [ "x.x.x.x:9273", "x.x.x.x:9273", "x.x.x.x:9273" ],
"labels": {
"env": "prod",
"services": "es"
}
}
]
配置文件主要注意部分为scrape_configs,该部分类似filebeat的收集者。
官方配置介绍
启动
./prometheus --config.file="prometheus.yml" --web.enable-lifecycle --log.level=info &
启动后可访问http://x.x.x.x:9090/。
在启动命令中包含--web.enable-lifecycle的情况下,可以在运行时重新加载配置文件,只需发送一个reload等post请求:
http://x.x.x.x:9090/-/reload
数据可视化
prometheus的web_console可以提供简单的数据查询及图像生成功能,但在实际使用中一般与grafana配合使用。grafana自身支持集成prometheus,在datasource中添加prometheus后即可定制图像。