本文基于Centos+docker的环境,通过搭建一个主机状态监测系统介绍了Prometheus时序数据库的应用
系统环境 Centos7
docker版本 20.10.8
Prometheus介绍
Prometheus是集报警监控的时序数据库,是开源的时序数据库,一般用于数据中心的报警监控。
Prometheus的介绍请点这里
这里献上一张Prometheus的架构图
Prometheus实践
Prometheus和Grafana对本机服务器性能进行监控
step.1 首先下载相关镜像
$ docker pull prom/node-exporter
$ docker pull prom/prometheus
$ docker pull grafana/grafana
node-exporter提供一个http的接口,用于获取主机的系统数据
prometheus即监控时序数据库
grafana为一个开源的数据可视化平台,用于时序数据展示,它内置了许多数据源的支持
prometheus还提供了许多其他的exporter,有兴趣的同学可以自己去研究
step.2 启动node-exporter
docker run -d -p 9100:9100 --name=node-exporter --net="host" prom/node-exporter
注意--net="host"
这里指定了网络,让容器与主机为通一网络,否则noder-exporter无法正常采集到主机的数据
启动后,浏览器输入http://192.168.1.4:9100
即可看到node-exporter采集的数据
step.3 启动Prometheus开始采集数据
创建一个yml文件,用于配置Prometheus
mkdir -p /docker/prometheus
touch prometheus.yml
prometheus.yml内容如下
global:scrape_interval: 60s evaluation_interval: 60s
scrape_configs:- job_name: prometheus scrape_interval: 30s static_configs:- targets: ['192.168.1.4:9090']labels: instance: prometheus- job_name: linuxstatic_configs:- targets: ['192.168.1.4:9100']labels:instance: localhost
注意上面的192.168.1.4:9100
即为前面启动的node-exporter所在提供的接口,node-exporter与prometheus不同一台服务器,则需要注意改写
上面设置了两个抓取对象,其中job_name: prometheus
为prometheus自己默认的数据,job_name:linux
为前面创建的node_exporter
开放的
启动prometheus前,先查看一下prometheus镜像的信息
docker inspect prom/prometheus
docker run -d -p 9090:9090 \
--name=prometheus \
-v /docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /docker/prometheus:/prometheus \
prom/prometheus
启动后,浏览器输入192.168.1.4:9090
进入Status>targets可看到如下内容
大功告成Prometheus已经开始正常采集数据了
step.4 启动grafana
快速启动grafana
docker run -d -p 3000:3000 --name=grafana grafana/grafana
这里就不挂在数据卷了,如果需要持久化数据,可加-v参数挂在数据卷
正常启动后,浏览器输入192.168.4.1:3000
可以看到如下界面,默认账号密码为admin/admin
首次登陆提示需要修改密码
登陆后进入如下界面
step.5 配置grafana可视化监控数据面板
首先创建数据源,点击add
选择Prometheus
设置一个数据源名,输入Prometheus的ip及端口号,点击保存及测试
开始创建展示面板,进入New dashboard
设置图表标题后,点击下方的 Metrics browser浏览可用的指标
可以看到有许多可选指标及标签
查找node_load1
一分钟的负载
选择好后,点击使用查询
可看到如下
右侧可以修改图标样式,设置好后,点击应用
得到如下图,点击保存按钮,保存面板
完成