Prometheus部署使用
# Prometheus部署
# 监控端(Prometheus)
# 下载Prometheus监控端程序,需要选择对应的操作系统和架构进行下载
# https://prometheus.io/download/
# 解压缩压缩包
mkdir -p /data/apps/prometheus/
tar -xvf ./prometheus*.tar.gz
mv prometheus-*/* /data/apps/prometheus/
rm -rf ./prometheus-*/
# 切换到程序目录
## 服务程序:prometheus
## 配置文件:prometheus.yml
cd /data/apps/prometheus/
# 启动服务
./prometheus --config.file=./prometheus.yml
# 访问Prometheus的Web界面:http://localhost:9090
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 被监控端(Target)
因为Prometheus是基于HTTP抓取指标数据的,所以需要使用Exporter来将被监控端的指标数据转化成兼容Prometheus的格式,并通过HTTP暴露出来。
此处以Node Exporter为例:
# 下载node_exporter节点暴露器,需要选择对应的操作系统和架构进行下载
# https://prometheus.io/download/
# 解压缩压缩包
mkdir -p /data/apps/node_exporter/
tar -xvf ./node_exporter*.tar.gz
mv ./node_exporter-*/* /data/apps/node_exporter/
rm -rf ./node_exporter-*/
# 切换到程序目录
## 服务程序:node_exporter
cd /data/apps/node_exporter/
# 启动node_exporter,可以通过--help查看帮助
# 需要指定端口可以使用--web.listen-address=:9100参数
nohup ./node_exporter &>app.log &
# 去监控端检查是否可以正常访问被监控端端口,默认监听端口为9100,指标的URI为/metrics
curl -s http://被监控端IP地址:9100/metrics | head -10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 静态配置Target
为了让Prometheus监控target的指标,我们可以在监控端的prometheus.yml
配置文件中的scrape_configs参数下添加一个新的job指向target:
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['被监控端01的IP地址:9100', '被监控端02的IP地址:9100']
1
2
3
4
2
3
4
配置之前应当尝试使用curl命令访问被监控端暴露地址,以检查网络和防火墙是否通。
# Prometheus基本配置
Prmetheus的主配置文件为:prometheus.yaml
,用于定义如何监控目标以及如何处理监控数据,它的基本配置如下:
# 全局配置,作用于整个Prometheus实例,如果局部没有相关配置就会使用全局配置
global:
# 默认的抓取(scrape)间隔
scrape_interval: 15s
# 规则评估间隔,指定多久评估一次规则和告警条件是否触发
evaluation_interval: 15s
# 添加到所有指标上的额外标签,一般用于区分Prometheus集群中的各个实例
external_labels:
monitor: "prometheus-01"
# 定义Prometheus如何发现和抓取目标
scrape_configs:
# 作业名称,用于逻辑上对目标进行分组
- job_name: "prometheus"
# (可选)指定该作业的抓取间隔,会覆盖全局的抓取间隔设置
scrape_interval: 5s
# (可选)抓取指标数据的HTTP路径,默认为/metrics
metrics_path: "/metrics"
# (可选)用于抓取的协议,http或https,默认为http
scheme: "http"
# 静态配置目标,直接列出要抓取目标地址和标签
static_configs:
# 要抓取的目标地址
- targets: ["localhost:9090"]
# 指定该job所有指标上的额外标签
labels:
env: "test"
role: "monitoring"
# 参考以上
- job_name: "node_exporter"
static_configs:
- targets: ["192.168.10.31:9100", "192.168.10.32:9100"]
labels:
env: "test"
role: "node"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Web页面
Prometheus的Web端口默认为9090,我们直接浏览器访问该端口即可。
Graph表达式浏览器(首页):http://localhost:9090/graph
表达式浏览器能让用户在Web页面直接执行PromQL进行查询,来查看实时或历史数据,并对数据进行简单的可视化展示。
它的查询结果格式为:
值 @ 时间戳
,其中值是float64格式的数据,时间戳为毫秒精度的时间戳。
Targets目标页面:http://localhost:9090/targets
Targets页面可以检查添加的target是否为UP状态。
Prometheus实例的指标页面:http://localhost:9090/metrics
用于暴露该Prometheus实例的一些指标数据。