部署软件prometheus普罗米修斯
监控服务器 需要安装4个服务
Prometheus Server(普罗米修斯监控主服务器)
Node Exporter (收集Host硬件和操作系统信息)
cAdvisor (负责收集Host上运行的容器信息)
Grafana (展示普罗米修斯监控界面)
下面是两种部署模式,根据情况进行部署:
1. 下载prometheus到监控端
其实只是要里面的prometheus.yml文件
https://github.com/prometheus/prometheus/releases/download/v2.6.0-rc.0/prometheus-2.6.0-rc.0.linux-amd64.tar.gz
这里我解压到/mdata/prometheus目录下
2. 安装Node Exporter 来收集硬件信息
docker run -d -p 9100:9100 \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
-v "/etc/localtime:/etc/localtime" \
--net=host \
prom/node-exporter \
--path.procfs /host/proc \
--path.sysfs /host/sys \
--collector.filesystem.ignored-mount-points"^/(sys|proc|dev|host|etc)($|/)"
3. 安装cAdvisor 来收集容器信息 所有节点运行以下命令来安装cAdvisor
docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
--net=host \
-v "/etc/localtime:/etc/localtime" \
google/cadvisor:latest
4.修改prometheus.yml文件
vim /mdata/prometheus/prometheus.yml
修改文件最后的:
static_configs:
- targets:['localhost:9090','localhost:8080','localhost:9100']
加入之前启动的两个容器端口,此处使用localhost是因为我采用的是监控端与被监控端同属一台服务器的方式,若果不属于一台则指定IP即可
5.运行普罗米修斯监控服务
docker run -d -p 9090:9090 \
-v /mdata/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v "/etc/localtime:/etc/localtime" \
--name prometheus \
--net=host \
prom/Prometheus
6. 访问页面
http://监控服务器IP:9090
单机Status下的Targets,显示全部为UP即为成功。
7. 安装grafana
docker run -d -i -p 3000:3000 -v"/etc/localtime:/etc/localtime" -e"GF_SERVER_ROOT_URL=http://grafana.server.name" -e"GF_SECURITY_ADMIN_PASSWORD=admin8888" --net=host grafana/grafana
#其中admin8888为密码,用户名默认为admin
通过http://IP:3000访问
8. 配置grafana
从做到右依次点击
点击save有明显的成功提示
添加图形
下载模板
https://grafana.com/dashboards?dataSource=prometheus&search=docker
点击下载
上传模板
点击+号会选择import,上传下载好的模板
此时会生成图形
9. 有些图形可能收取不到数据,原因是模板搜索的时候搜索不到,这时可以手动调整,例如:
假如下图出现的是N/A
点击running containers的小箭头(鼠标放置就会出现)
点击Edit编辑
在普罗米修斯web页面中进行搜索container_last_seen
搜索成功会出现数据
然后查看后面的匹配,如name!="" 表示排除到没有名字的数据,因为只有容器会定义名称,
如果没有匹配到说明正则有问题,根据输出进行修改即可