Prometheus 生态系统由多个组件组成,其中许多是可选的:
- 抓取和存储时间序列数据的主要Prometheus 服务器
- 用于检测应用程序代码的客户端库
- 支持短期工作的推送网关
- HAProxy、StatsD、Graphite 等服务的专用出口商
- 一个警报管理器来处理警报
- 各种支持工具
Promethues原理:
prometheus根据配置定时去拉取各个节点的数据,默认使用的拉取方式是pull,也可以使用pushgateway提供的push方式获取各个监控节点的数据。将获取到的数据存入TSDB,一款时序型数据库。此时prometheus已经获取到了监控数据,可以使用内置的PromQL进行查询。它的报警功能使用Alertmanager提供,Alertmanager是prometheus的告警管理和发送报警的一个组件。prometheus原生的图标功能过于简单,可将prometheus数据接入grafana,由grafana进行统一管理。如下图:
部署:docker安装:略过
docker版本:
docker镜像加速:
{
"registry-mirrors": [
"https://reg-mirror.qiniu.com"
]
}
安装完docker,配置好镜像加速之后,开始拉取所需镜像:
docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana
启动node-exporter:
docker run -itd -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" --net="host" prom/node-exporter
注意查看端口,或者docker ps
看看容器是否启动。
测试访问:
http://192.168.20.10:9100/metrics
如下图有数据显示表示成功:
启动prometheus
新建目录prometheus,编辑配置文件prometheus.yml
mkdir /opt/prometheus
cd /opt/prometheus/
vim prometheus.yml
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['192.168.20.100:9100']
labels:
instance: localhost
启动:
docker run -d -p 9090:9090 -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
同样的方法测试是否正常:
浏览器访问http://192.168.20.10:9090/graph
访问targets:
接下来要启动grafana:
创建用来存储数据的目录:grafana-storage,并给权限:
mkdir /opt/grafana-storage
chmod 777 -R /opt/grafana-storage
启动grafana:
docker run -d -p 3000:3000 --name=grafana -v /opt/grafana-storage:/var/lib/grafana grafana/grafana
同上,docker ps
可查看容器启动情况,注意查看端口是否启动,这里做url访问测试:
http://192.168.20.10:3000/
用户名密码均是admin,登录登录之后还会再次确认密码
登录后:
搭建完成,里面监控模板自定义。
参考promethues官方文档:
https://prometheus.io/docs/introduction/overview/