Docker 可视化监控搭建过程

不止测试 · 2024年07月31日 · 最后由 墨妖 回复于 2024年08月02日 · 4862 次阅读

Guide

这篇文章讲解如何使用 docker 搭建硬件可视化监控环境的操作过程。操作过程基于训练营的学习,经个人总结整理,如有遗漏或疑惑的地方,可在讨论区留言。

分布式监控优点:

1)信息高度集中
信息多元且海量,可以根据不同的机器提供不同的维度。还可以根据通过时间维度去追溯历史数据,方便复盘和追踪。
2)加速信息传递效率
项目成员通过大屏链接地址访问,可以将信息更快共享给其它成员。还可以通过数据的走向趋势预判会触发的阈值以达到提前
发现风险的效果。

缺点:
1)数据展示没有操作命令那么快。可视化界面的数据流:采集数据 - 存储到数据库 - 展示数据

搭建过程

1.需要工具:
Exporter 收集
Promethues 存储
Grafana 实时展示数据

2.docker 运行命令(运行成功后检查):
命令:docker run -d -p 9100:9100 --name czy-exporter prom/node-exporter
(使用http://ip:端口 进行访问)

命令:docker run -d -p 9090:9090 --name czy-prometheus prom/prometheus
(prometheus 的 Endpoint 状态是 UP 才正常)

命令:docker run -d -p 3000:3000 --name czy-grafana grafana/grafana

3.Exporter 介绍
为 Prometheus 提供监控数据源的都被称为 Exporter,比如 Node Exporter 用来提供节点相关的资源(cpu、内存、disk...)使用状况,而 Prometheus 从这些不同的 Exporter 中获取监控数据,然后可以在诸如 Grafana 这样的可视化工具中进行结果的显示。
常用的 Exporter:硬件、数据库(mysql,Oracle、redis)、java 应用、消息队列、日志、docker

4.Prometheus 如何把 Exporter 监控的数据写到数据库中
进入到 Prometheus 修改配置
命令:docker exec -it czy-prometheus sh
prometheus.yml 配置路径:/etc/prometheus/prometheus.yml
若是要监控其它服务器的资源,在 scrape_configs 下面另起一个 job_name,添加 IP 和端口,分布式监控的实现就是基于这个实现

或者将配置复制到本地后,再修改
命令:docker cp czy-prometheus:/etc/prometheus/prometheus.yml .

注意 :targets 里面配置的端口是 exporter 的端口,prometheus 从 exporter 获取数据

改完后再复制到容器里面
命令:docker cp prometheus.yml czy-prometheus:/etc/prometheus/
改完后要重启容器才能生效
docker restart czy-prometheus

刷新后

5.grafana 添加模板
a.进入 Data sources 里面添加 data sources

b.搜索 prometheus ,选择它

c.填写配置信息
主要填写 Name 和 URL ,然后保存测试,显示 working 证明网络已经连通了

注意 :URL 里面配置的端口是 prometheus 的端口,grafana 从 prometheus 获取数据进行展示

d.进入 grafana 官网查找模板 ID
https://grafana.com/grafana/dashboards/
可以找一个中文版本的
Node Exporter Dashboard 20240520 TenSunS 自动同步版

复制 ID

e.导入模板

注意选择 之前命名的 prometheus-9090

正常的数据展示

共收到 2 条回复 时间 点赞

influxdb+telegraf+grafana 的方案和楼主的方案相比较,不知道有哪些利弊呢?

你这个太麻烦了,找个 docker-compose 方案,就只需要 从 “d.进入 grafana 官网查找模板 ID” 开始就完成搭建了,例如:
version: '2'

networks:
monitor:
driver: bridge

services:
prometheus:
image: prom/prometheus
container_name: prometheus
hostname: prometheus
restart: always
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml

- ./node_down.yml:/usr/local/etc/node_down.yml:rw

ports:
- "9090:9090"
networks:
- monitor

alertmanager:
image: prom/alertmanager
container_name: alertmanager
hostname: alertmanager
restart: always

volumes:

- ./alertmanager.yml:/usr/local/etc/alertmanager.yml

ports:
- "9093:9093"
networks:
- monitor

grafana:
image: grafana/grafana
container_name: grafana
hostname: grafana
restart: always
ports:
- "3000:3000"
networks:
- monitor

node-exporter:
image: quay.io/prometheus/node-exporter
container_name: node-exporter
hostname: node-exporter
restart: always
ports:
- "9100:9100"
networks:
- monitor

cadvisor:
image: google/cadvisor:latest
container_name: cadvisor
hostname: cadvisor
restart: always
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
ports:
- "8899:8080"
networks:
- monitor

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册