背景
家里自从安装了Esxi服务之后,在上面装好了好几个各种用途的虚拟机,机器少了还好,登上去看下负载即可,但机器多了之后,不得不统一监控一下负载,自己又是一个比较懒的人,本着能省事则省事的原则,找到了一个相对简单的方案。
假设有服务器A、B、C
我想在A上安装监控服务,来监控ABC三台服务器的负载情况,包括A服务器监控自己。
方案
采用经典的grafana+Prometheus+node_exporter的CP组合,同时所有的组件都是使用docker-compose的方式来执行,这样的好处就是所有服务都在容器内,不会对宿主机产生污染。
组件
搭建
在AI的年代,对于docker这种标准化的模板代码,使用AI来写再适合不过了,下面就是AI帮我生成的docker-compose脚本。
服务器A:
version: '3'
services:
prometheus:
image: prom/prometheus
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
restart: unless-stopped
grafana:
image: grafana/grafana
container_name: grafana
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
restart: unless-stopped
node_exporter:
image: prom/node-exporter
container_name: node_exporter
ports:
- "9100:9100"
restart: unless-stopped
volumes:
grafana_data:
可以看到,A服务器上运行了Prometheus+grafana+node_exporter(监控自己)三个组件。
在docker-compose的同级目录下,创建prometheus.yml
global:
scrape_interval: 15s # 抓取间隔
scrape_timeout: 10s # 抓取超时时间
scrape_configs:
- job_name: "node" # 任务名称
static_configs:
- targets: ["192.168.3.17:9100","192.168.3.20:9100","192.168.3.2:9100"] # 替换为你的node_exporter地址
服务器B\C:
version: '3'
services:
node_exporter:
image: prom/node-exporter
container_name: node_exporter
ports:
- "9100:9100"
restart: unless-stopped
B、C两天服务器是同等位置,这里只贴一个。
部署
因为使用docke部署起来就异常简单,将上面的docker-compose文件复制到服务器上面:
个人一般操作方法,第一次在前端执行,查看日志没有异常后,再添加-d参数,选择后台执行。
docker compose up -d
搭建看板
在浏览器打开服务器A的grafana服务:
http://server_A:3000
默认用户名密码admin
添加数据源
首先添加Prometheus数据源,因为我的Prometheus部署在服务器A上面,所以填写信息如下:
添加看板
操作路径:添加看板-》导入-》
然后在输入框中输入看板id:1860 或者 10204,或者去官网上找自己喜欢的看板。
查看效果
到这里就全部搭建好了,这个方案的优点:
结构简单简单易上手,
使用容器部署,不污染宿主机,不想监控直接删除容器即可。
参考资料
Docker:https://www.docker.com
Docker Compose: https://docs.docker.com/compose
Prometheus: https://prometheus.io
Node Exporter: https://prometheus.io/docs/guides/node-exporter
Grafana: https://grafana.com
评论区