Prometheus+Grafana监控服务器资源
在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。
上篇文章只写了安装Prometheus Server和Grafana,这里来个小小的实战,通过Node Exporter(可以收集内核公开的硬件和操作系统指标等)来采集服务器资源信息,并通过Grafana展示。
1. 配置 Node Exporter 采集服务器数据
1、下载镜像
docker pull prom/node-exporter
2、启动容器
docker run -d --name node-exporter -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter
3、启动后,访问 http://127.0.0.1:9100/metrics 可以发现已经有很多操作系统的信息了,比如cpu、内存、磁盘等信息:
2. Prometheus配置
修改宿主机prometheus配置文件prometheus.yml
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
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: ["10.246.140.63:9090"]
labels:
instance: prometheus
- job_name: "mac_m1"
static_configs:
- targets: ["10.246.140.63:9100"]
labels:
instance: mac_m1
主要是在prometheus.yml默认配置中加一个job,job_name我这里写了个 "mac_m1"
,targets就是Node Exporter服务的地址,可以写多个比如 "10.246.140.63:9100","10.246.140.64:9100"
修改完配置文件,重启Prometheus
docker restart prometheus
然后在Prometheus的targets中(http://127.0.0.1:9090/targets)就可以看到刚才配置的Node Exporter服务了:
在Prometheus UI界面随便查询一个 Node Exporter 的采集指标(可以在 http://localhost:9100/metrics 中查看),可以查询到采集到的当前CPU空闲时间为 108707.77
3. 在Grafana中创建监控看板
在Grafana中添加数据源,选择Prometheus
配置prometheus地址,其他可以默认:
填好后点击【保存 & 测试】测试一下并保存。
通过导入现成模板(https://grafana.com/grafana/dashboards/8919)的方式创建Dashboard,Create -> Import
直接输入模板编号 8919 后点 Load,然后数据源选择 Prometheus,点 Import,最后的效果: