Docker监控部署

部署软件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!="" 表示排除到没有名字的数据,因为只有容器会定义名称,

如果没有匹配到说明正则有问题,根据输出进行修改即可

你可能感兴趣的:(Docker监控部署)