在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,最后的效果: