博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第 10 章 容器监控 - 085 - 如何快速部署 Prometheus?
阅读量:7011 次
发布时间:2019-06-28

本文共 3401 字,大约阅读时间需要 11 分钟。

快速搭建 Prometheus 监控系统

 

环境说明

通过 Prometheus 监控两台 Docker Host:10.12.31.22 和 10.12.31.23,监控 host 和容器两个层次的数据。

 

按照架构图,我们需要运行如下组件:

 

Prometheus Server

Prometheus Server 本身也将以容器的方式运行在 host 10.12.31.23 上

 

Exporter

Prometheus 有很多现成的 Exporter,完整列表请参考

 

将使用:

Node Exporter,负责收集 host 硬件和操作系统数据。它将以容器方式运行在所有 host 上

cAdvisor,负责收集容器数据。它将以容器方式运行在所有 host 上

 

Grafana

显示多维数据,Grafana 本身也将以容器方式运行在 host 10.12.31.23 上

 

运行 Node Exporter

 

在两个 host 上执行如下命令:

docker run -d -p 9100:9100 \

  -v "/proc:/host/proc" \

  -v "/sys:/host/sys" \

  -v "/:/rootfs" \

  --net=host \

  prom/node-exporter \

  --path.procfs /host/proc \

  --path.sysfs /host/sys \

  --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"

 

注意,这里使用了 --net=host,这样 Prometheus Server 可以直接与 Node Exporter 通信

 

Node Exporter 启动后,将通过 9100 提供 host 的监控数据。

在浏览器中通过   测试一下

 

 

运行 cAdvisor

 

在两个 host 上执行如下命令:

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 \

  google/cadvisor:latest

 

注意,这里使用了 --net=host,这样 Prometheus Server 可以直接与 cAdvisor 通信

 

cAdvisor 启动后,将通过 8080 提供 host 的监控数据。

在浏览器中通过 测试一下

 

 

运行 Prometheus Server

 

在 host 10.12.31.23 上执行如下命令:

docker run -d -p 9090:9090 \

  --name prometheus \

  --net=host \

  prom/prometheus

 

注意,这里使用了 --net=host,这样 Prometheus Server 可以直接与 Exporter 和 Grafana 通信

/etc/prometheus/prometheus.yml 是 Prometheus Server 的配置文件

进入容器,修改配置文件后重启

static_configs:

  - targets: ['localhost:9090','localhost:8080','localhost:9100','10.12.31.22:8080','10.12.31.22:9100']

 

最重要的配置是:

static_configs:

  - targets: ['localhost:9090','localhost:8080','localhost:9100','10.12.31.22:8080','10.12.31.22:9100']

 

指定从哪些 exporter 抓取数据。这里指定了两台 host 上的 Node Exporter 和 cAdvisor

 

另外 localhost:9090 就是 Prometheus Server 自己,可见 Prometheus 本身也会收集自己的监控数据。

同样地,我们也可以通过 测试一下

 

在浏览器中打开 ,点击菜单 Status -> Targets

 

如下图所示:

 

所有 Target 的 State 都是 UP,说明 Prometheus Server 能够正常获取监控数据

 

 

运行 Grafana

 

在 host 10.12.31.23 上执行如下命令:

docker run -d -i -p 3000:3000 \

  -e "GF_SERVER_ROOT_URL=http://grafana.server.name"  \

  -e "GF_SECURITY_ADMIN_PASSWORD=secret"  \

  --net=host \

  grafana/grafana

 

注意,这里使用了

--net=host,这样 Grafana 可以直接与 Prometheus Server 通信

-e "GF_SECURITY_ADMIN_PASSWORD=secret 指定了 Grafana admin用户密码 secret

 

Grafana 启动后。在浏览器中打开   用户名:admin,用户密码:secret

 

登录后

Grafana 将引导我们配置 Data Source

 

选择 Prometheus

 

Url 输入 Prometheus Server 的地址 ;其他保持默认值,点击 Save & Test

 

一切顺利,Grafana 应该已经能够访问 Prometheus 中存放的监控数据了

 

Grafana 是通过 Dashboard 展示数据的,在 Dashboard 中需要定义:

展示 Prometheus 的哪些多维数据?需要给出具体的查询语言表达式。

用什么形式展示,比如二维线性图,仪表图,各种坐标的含义等。

可见,要做出一个 Dashboard 也不是件容易的事情。

幸运的是可以借助开源社区,直接使用现成的 Dashboard。

 

访问 https://grafana.com/dashboards?dataSource=prometheus&search=docker ,将会看到很多用于监控 Docker 的 Dashboard。

 

 

下载这些现成的 Dashboard,然后 import 到我们的 Grafana 中就可以直接使用了。

 

 

比如下载 Docker and system monitoring,得到一个 json 文件,然后点击 Grafana 左上角菜单 Dashboards -> Import。

 

导入下载的 json 文件。

 

Dashboard 将立刻展示出漂亮的图表。

 

在这个 Dashboard 中,上部分是 host 的数据,我们可以通过 Node 切换不同的 host。

 

Dashboard 的下半部分展示的是所有的容器监控数据。

Grafana 的 Dashboard 是可交互的,我们可以在图表上只显示指定的容器、选取指定的时间区间、重新组织和排列图表、调整刷新频率,功能非常强大。

 

 

-----------------------------------------引用来自---------------------------------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587965&idx=1&sn=8bce9449e4d00972fef77f7fafcda0f4&chksm=8d3081e4ba4708f270aea6bb7c8b60bc1480d5775668916ebe6beb69916411d7fe24b53812e3&scene=21#wechat_redirect

转载于:https://www.cnblogs.com/gsophy/p/10825891.html

你可能感兴趣的文章
H3C设备之多区域OSPF
查看>>
关于ORA-01950: no privileges on tablespace 的解决
查看>>
八、MySQL索引
查看>>
【分享】Java中如何读写cookie
查看>>
word导出html实现在线预览
查看>>
redhat 7.x 、redhat 6.x查看硬盘UUID方法
查看>>
nginx做负载均衡,引起写io大的优化
查看>>
关于博客不能显示上传图片的问题
查看>>
AMD
查看>>
.net webapi自定义序列化时间
查看>>
将博客搬至CSDN
查看>>
Unity 中Token的应用
查看>>
Mysql 基于 Amoeba 的 读写分离
查看>>
借口退避算法
查看>>
我的友情链接
查看>>
IMAP4协议让企业邮件系统收发更灵活方便
查看>>
Hadoop MapReduce流程
查看>>
exe4j 给jar打包exe文件
查看>>
win ser 2003域架构升级到win ser2008域架构
查看>>
10个最好用的在线编译/调试工具
查看>>