Docker搭建Prometheus-Grafana-nodeExporter
node-exporter
简介
Exporter是Prometheus的一类数据采集组件的总称。它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。 与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取,默认的抓取地址为http://CURRENT_IP:9100/metrics
。
Prometheus提供多种类型的Exporter用于采集各种不同服务的运行状态。Node Exporter顾名思义,主要用于采集底层服务器的各种运行参数。
目前Node Exporter支持几乎所有常见的监控点,比如conntrack
,cpu
,diskstats
,filesystem
,loadavg
,meminfo
,netstat
等。 详细的监控点列表请参考其Github repo。
监控本机,只需要一个exporter。
node-exporter镜像来源
node-exporter 镜像库地址:https://hub.docker.com/r/prom/node-exporter/tags
可以通过 Sort by 查看其他版本的 node-exporter,默认是最新版本 prom/node-exporter:latest。
还可以用 docker search node-exporter 命令来查看可用版本。
获取node-exporter镜像
docker pull prom/node-exporter:latest
# 查看镜像
docker images
启动node-exporter容器
node_exporter设计用于监控主机系统。不建议将其部署为Docker容器,因为它需要访问主机系统。请注意,您要监视的任何非根安装点都需要绑定到容器中。如果启动容器以进行主机监视,请指定path.rootfs
参数。此参数必须与host root的bind-mount中的路径匹配。node_exporter将path.rootfs
用作访问主机文件系统的前缀。
docker run -d –name node_exporter
–restart=always
–net=”host” –pid=”host”
-v “/proc:/host/proc:ro”
-v “/sys:/host/sys:ro”
-v “/:/rootfs:ro”
prom/node-exporter
–path.procfs=/host/proc
–path.rootfs=/rootfs
–path.sysfs=/host/sys
–collector.filesystem.ignored-mount-points=’^/(sys|proc|dev|host|etc)($$|/)’
测试
访问url: http://IP:9100/metrics,IP为node_exporter所在机子IP。
Prometheus
简介
Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。目前,许多公司和组织都采用了 Prometheus 作为监控告警工具。Prometheus 的开发者和用户社区非常活跃,它现在是一个独立的开源项目,可以独立于任何公司进行维护。
优势
- 由指标名称和键/值对标签标识的时间序列数据组成的多维数据模型。
- 强大的查询语言 PromQL。
- 不依赖分布式存储,单个服务节点具有自治能力。
- 时间序列数据是服务端通过 HTTP 协议主动拉取获得的。
- 可以通过中间网关来推送时间序列数据。
- 可以通过静态配置文件或服务发现来获取监控目标。
- 支持多种类型的图表和仪表盘。
组件
- Prometheus Server 作为服务端,用来存储时间序列数据。
- 客户端库用来检测应用程序代码。
- 用于支持临时任务的推送网关。
- Exporter 用来监控 HAProxy,StatsD,Graphite 等特殊的监控目标,并向 Prometheus 提供标准格式的监控样本数据。
- alartmanager 用来处理告警。
- 其他各种周边工具。
架构
适用场景
Prometheus 适用于记录文本格式的时间序列,它既适用于以机器为中心的监控,也适用于高度动态的面向服务架构的监控。在微服务的世界中,它对多维数据收集和查询的支持有特殊优势。Prometheus 是专为提高系统可靠性而设计的,它可以在断电期间快速诊断问题,每个 Prometheus Server 都是相互独立的,不依赖于网络存储或其他远程服务。当基础架构出现故障时,你可以通过 Prometheus 快速定位故障点,而且不会消耗大量的基础架构资源。
但是,因为 Prometheus 收集的数据不够详细完整,所以在百分之百准确度的场景下,例如按请求数量计费, Prometheus 可能不太适用。
Prometheus镜像来源
Prometheus 镜像库地址:https://hub.docker.com/r/prom/prometheus/tags
可以通过 Sort by 查看其他版本的 Prometheus,默认是最新版本 prom/prometheus:latest。
还可以用 docker search prometheus 命令来查看可用版本。
获取Prometheus镜像
docker pull prom/prometheus:latest
# 查看镜像
docker images
新建Prometheus配置文件prometheus.yml
mkdir -p /usr/local/docker/prometheus
cd /usr/local/docker/prometheus
vi prometheus.yml
prometheus.yml内容
192.168.198.200是本机地址,注意修改IP地址。
1 | global: |
启动Prometheus容器
docker run -d –name prometheus
-p 9090:9090
-v /usr/local/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
prom/prometheus# 自启动
docker update prometheus –restart=always
测试
访问url:http://192.168.198.200:9090/graph
访问targets:http://192.168.198.200:9090/targets
Grafana
简介
Grafana 是一个跨平台的开源的度量分析和可视化工具,主要用于查询并可视化展示采集的数据。
Grafana 提供了丰富的可视化展示方式,包括快速灵活的客户端图表,拥有不同方式的可视化指标和日志的面板插件以及丰富的仪表盘插件,包括热图、折线图、图表等。
特点
- Grafana 拥有快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式,让我们复杂的数据展示的美观而优雅。
- Grafana 支持许多不同的时间序列数据(数据源)存储后端。每个数据源都有一个特定查询编辑器。官方支持以下数据源:Graphite、infloxdb、opensdb、prometheus、elasticsearch、cloudwatch。每个数据源的查询语言和功能明显不同。你可以将来自多个数据源的数据组合到一个仪表板上,但每个面板都要绑定到属于特定组织的特定数据源。
- Grafana 中的警报允许您将规则附加到仪表板面板上。保存仪表板时,Gravana 会将警报规则提取到单独的警报规则存储中,并安排它们进行评估。报警消息还能通过钉钉、邮箱等推送至移动端。但目前 Grafana 只支持 graph 面板的报警。
- Grafana 使用来自不同数据源的丰富事件注释图表,鼠标悬停在事件上会显示完整的事件元数据和标记。
- Grafana 使用 Ad-hoc 过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。
Grafana镜像来源
Grafana 镜像库地址:https://hub.docker.com/r/grafana/grafana/tags
可以通过 Sort by 查看其他版本的 Grafana,默认是最新版本 grafana/grafana:latest。
还可以用 docker search grafana 命令来查看可用版本。
获取Grafana镜像
docker pull grafana/grafana:latest
# 查看镜像
docker images
创建grafana-storage目录,用来存储数据
mkdir /usr/local/docker/grafana-storage
chmod 777 -R /usr/local/docker/grafana-storage
启动Grafana容器
docker run -d
–restart=always
-p 3000:3000
–name=grafana
-v /usr/local/docker/grafana-storage:/var/lib/grafana
grafana/grafana
测试
访问url:http://192.168.198.200:3000/
默认先跳转到登录页面,默认的用户名和密码都是admin