Prometheus(普罗米修斯)
实验环境:(各个主机, ip, 所需服务)
- docker01 docker02 docker03
- 1.10 1.20 1.30
- NodeEXporter NodeEXporter NodeEXporter
- cAdvisor cAdvisor cAdvisor
- Prometheus Server
- Grafana
全部关闭防火墙, 禁用 selinux.
- [root@docker01 ~]# systemctl stop firewalld
- [root@docker01 ~]# systemctl disable firewalld
- [root@docker01 ~]# setenforce 0
- setenforce: SELinux is disabled
需要部署组件:
Prometheus Server: 普罗米修斯的主服务器.
NodeEXporter: 负责收集 Host 硬件信息和操作系统信息.
cAdvisor: 负责收集 Host 上运行的容器信息.
Grafana: 负责展示普罗米修斯监控界面.
1. 导入镜像
docker01:
- [root@docker01 ~]# docker load < mycadvisor.tar && docker load < grafana.tar && docker load < node-exporter.tar && docker load < prometheus.tar
- docker02:
- [root@docker02 ~]# docker load < mycadvisor.tar && docker load < node-exporter.tar
- docker03:
[root@docker03 ~]# docker load < mycadvisor.tar && docker load < node-exporter.tar
镜像拉入完成!!!
1)3 个节点, 全部部署 node-EXporter 和 cAdvisor.
PS:3 台都弄, 都去浏览器验证
部署 node-EXporter, 收集硬件和系统信息
[root@docker01 ~]# 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)($|/)"
PS: 注意, 这里使用了 --net=host, 这样 Prometheus Server 可以直接与 Node-Exporter 通信.
验证: 打开浏览器验证结果: ip 加 9100 端口:
// 部署安装 cAdvisor. 收集节点容器信息.
PS:3 台都弄, 都去浏览器验证
[root@docker01 ~]# docker run -v /:/rootfs:ro -v /var/run:/var/run/:rw -v /sys:/sys:ro -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor --net=host google/cadvisor
, 都去部署完成之后, 浏览器访问: IP 加 8080 端口:
2) 在 docker01 上部署 Prometheus Server 服务.
在部署 Prometheus 之前, 我们需要对它的配置文件进行修改, 所以我们先运行一个容器, 先将其配置文件拷贝出来.
- [root@docker01 ~]# docker run -d -p 9090:9090 --name prometheus --net=host prom/prometheus
- [root@docker01 ~]# docker cp prometheus:/etc/prometheus/prometheus.YAML ./
[root@docker01 ~]# VIM prometheus.YAML
28 行改为:
• - targets: ['localhost:9090','localhost:8080','localhost:9100','192.168.1.20:8080','192.168.1.20:9100','192.168.1.30:8080','192.168.1.30:9100']
每个节点的 ip, 端口
PS: 这里制定了 prometheus 的监控项, 包括它也回监控自己收集到的数据.
- [root@docker01 ~]# docker rm -f prometheus
- prometheus
- [root@docker01 ~]# docker run -d -p 9090:9090 --name prometheus --net=host -v /root/prometheus.YAML:/etc/prometheus/prometheus.YAML prom/prometheus
互联网访问验证: docker01 的 ip 加 9090 端口:
PS: 这里能够哦查看到我们各个监控项.
挂起 docker02 后:
继续运行 docker02 后:
3) 在 docker01 上, 部署 grafana 服务, 用来展示 prometheus 收集到的数据.
- [root@docker01 ~]# mkdir grafana-storage
- [root@docker01 ~]# chmod 777 -R grafana-storage/
- [root@docker01 ~]# docker run -d -p 3000:3000 --name grafana -v /root/grafana-storage:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=123.com" grafana/grafana
浏览器访问验证:
账户: admin
密码: 123.com
PS: 看到这个, 说明 prometheus 和 grafana 服务时正常连接的.
此时, 虽然 granfana 收集到了数据, 但怎么显示它, 仍然是个问题, gafana 支持自定义显示信息, 不过要自定义起来非常麻烦, 不过好在, granfana 官方为我们提供了一些模板, 来供我们使用.
granfana 官网:
https://grafana.com/docs/grafana/latest/
选中一款模板, 然后, 我们有 2 中方式可以套用这个模板.
第一种方式: 通过 JSON 文件使用模板.
下载完成之后, 放到桌面, 来到 grafana 控制台
第二种导入模板的方式:
可以直接通过模板的 ID 号.
模板 ID:
用 10619
再回到 grafana 控制台
意外:
自带模板:
来源: http://blog.51cto.com/13997536/2461252