通过Docker部署Prometheus + Grafana搭建监控平台【超详细版】

文章目录

  • 前言
  • 一、Prometheus、Grafana
    • [1.1 Prometheus简介](#1.1 Prometheus简介)
    • [1.2 Grafana简介](#1.2 Grafana简介)
    • [1.3 Prometheus的核心组件](#1.3 Prometheus的核心组件)
    • [1.4 Prometheus优点](#1.4 Prometheus优点)
    • [1.5 Prometheus缺点](#1.5 Prometheus缺点)
  • 二、部署Docker
  • 三、主节点部署Prometheus+Grafana
    • [3.1 部署Prometheus](#3.1 部署Prometheus)
    • [3.2 防火墙开放端口](#3.2 防火墙开放端口)
    • [3.3 访问服务](#3.3 访问服务)
    • [3.4 安装Grafana](#3.4 安装Grafana)
    • [3.5 防火墙开放端口](#3.5 防火墙开放端口)
    • [3.6 访问服务](#3.6 访问服务)
    • 3.7自定义账号/密码:admin/admin
  • 四、从节点部署Node_exporter
    • [4.1 被采集的主机节点上部署Node_exporter](#4.1 被采集的主机节点上部署Node_exporter)
    • [4.2 防火墙开放端口](#4.2 防火墙开放端口)
  • 五、主节点配置Prometheus
    • [5.1 在主节点上修改Prometheus主配置文件](#5.1 在主节点上修改Prometheus主配置文件)
  • 六、配置Grafana监控界面
    • [6.1 添加Prometheus数据源](#6.1 添加Prometheus数据源)
    • [6.2 选择Prometheus类型](#6.2 选择Prometheus类型)
    • [6.3 输入主节点PrometheusIP地址及端口](#6.3 输入主节点PrometheusIP地址及端口)
    • [6.4 点击sava保存](#6.4 点击sava保存)
    • [6.5 新增Dashboard Linux基础数据展示](#6.5 新增Dashboard Linux基础数据展示)
    • [6.6 填写模板id](#6.6 填写模板id)
    • [6.7 选择刚刚创建好的数据源](#6.7 选择刚刚创建好的数据源)
    • [6.8 查看Dashboard](#6.8 查看Dashboard)
  • 总结

前言

Prometheus (普罗米修斯R)是一套开源的监控&报警&时间序列数据库的组合,由SoundCloud公司开发。
Prometheus 基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker。
Prometheus 应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。
Prometheus 号称下一代监控系统,已经成为主导及容器监控方面的标配,并且在未来可见的时间内被广泛应用


提示:以下是本篇文章正文内容,下面案例可供参考

一、Prometheus、Grafana

1.1 Prometheus简介

Prometheus是由SoundCloud公司开发的开源监控和警报工具包。其设计思想是通过时间序列数据库存储监控数据,并通过强大的查询语言PromQL对数据进行分析。Prometheus的架构高度模块化,易于扩展,特别适合云原生环境,如Kubernetes集群。

1.2 Grafana简介

Grafana是一个开源的数据可视化工具,广泛用于绘制图表和仪表盘。它可以与多种数据源配合使用,如Prometheus、Graphite等,并提供丰富的图表类型和插件支持。Grafana的用户友好界面使得自定义和共享仪表盘变得轻而易举。

通过将Prometheus的数据采集、存储与Grafana的可视化能力相结合,可以创建一套强大的监控系统,帮助维护和优化大规模的IT环境。

1.3 Prometheus的核心组件

Prometheus服务器 :负责收集和存储时间序列数据。
exporters :用于将不同类型的监控指标转化为Prometheus格式,例如node_exporter用于收集主机级别的指标。
Pushgateway :允许短暂的生命进程将指标推送到Prometheus,适用于批处理作业。
Alertmanager :负责处理Prometheus服务器发出的警报。
各种客户端库 :用于与被监控的程序集成,这些库可以帮助自动生成指标。

Prometheus服务器是架构中的关键组件,它通过拉取(Pull)的方式从配置的目标中收集指标数据,并存储在自身的时序数据库中。通过查询接口,用户可以实时获取监控数据,进行问题诊断和趋势分析。

1.4 Prometheus优点

(1)提供多维度数据模型和灵活的查询方式

通过将监控指标关联多个 tag,来将监控数据进行任意维度的组合,并且提供简单的 PromQL 查询方式,还提供 HTTP 查询接口,可以很方便地结合 Grafana 等 GUI 组件展示数据。

(2)基于时序数据库,支持服务器节点的本地存储

通过 Prometheus 自带的时序数据库,可以完成每秒千万级的数据存储;不仅如此,在保存大量历史数据的场景中,Prometheus 可以对接第三方时序数据库和 OpenTSDB 等。

(3)定义了开放指标数据标准

以基于 HTTP 的 Pull 方式采集时序数据,只有实现了Prometheus监控数据才可以被 Prometheus 采集、汇总、并支持 Push 方式向中间网关推送时序列数据,能更加灵活地应对多种监控场景。

(4)支持通过静态文件配置和动态发现机制发现监控对象

自动完成数据采集。Prometheus 目前已经支持 Kubernetes、etcd、Consul 等多种服务发现机制。

(5)易于维护

可以通过二进制文件直接启动,并且提供了容器化部署镜像。

(6)集群支持

支持数据的分区采样和集群部署,支持大规模集群监控。

1.5 Prometheus缺点

Prometheus 是基于 Metric 的监控,不适用于日志(Logs)、事件(Event)、调用链(Tracing)。

由于Prometheus采用的是Pull模型拉取数据,意味着所有被监控的endpoint必须是可达的,需要合理规划网络的安全配置。

指标众多,需进行适当裁剪。
本次部署Prometheus+Grafana需要两台服务器

主节点(10.10.10.65)主要负责部署Prometheus+Grafana,搭建监控server平台,并开启9090、3000端口

从节点(10.10.10.214)主要负责部署Node_exporter,主要在被采集的主机上部署插件服务,并开启9100服务端口,支持部署多台被采集的主机,由主节点统一管理

二、部署Docker

可以参考我之前部署docker教程,非常详细

三、主节点部署Prometheus+Grafana

3.1 部署Prometheus

c 复制代码
#拉取镜像
docker pull prom/prometheus
#运行容器
docker run -itd --name=prometheus --restart=always -p 9090:9090 prom/prometheus

3.2 防火墙开放端口

javascript 复制代码
#开放端口策略
firewall-cmd --zone=public --add-port=9090/tcp --permanent
#刷新防火墙配置
firewall-cmd --reload
#查看已开放端口
firewall-cmd --list-ports

3.3 访问服务

通过浏览器访问http://ip地址:9090

3.4 安装Grafana

c 复制代码
#创建存储卷
docker volume create -d local grafana_storage
#查看存储卷
docker volume ls
#拉取镜像
docker pull grafana/grafana
#运行容器
docker run -itd --name=grafana \
--restart=always \
-p 3000:3000 \
-v grafana_storage:/var/lib/grafana \
grafana/grafana

3.5 防火墙开放端口

javascript 复制代码
#开放端口策略
firewall-cmd --zone=public --add-port=3000/tcp --permanent
#刷新防火墙配置
firewall-cmd --reload
#查看已开放端口
firewall-cmd --list-ports

3.6 访问服务

通过浏览器访问http://ip地址:3000

3.7自定义账号/密码:admin/admin

四、从节点部署Node_exporter

4.1 被采集的主机节点上部署Node_exporter

Node_exporter收集机器的系统数据,这里采用prometheus官方提供的exporter,除node_exporter外,官方还提供consul,memcached,haproxy,mysqld等exporter,具体可查看官网。

c 复制代码
#创建存储卷
docker volume create -d local node_proc
docker volume create -d local node_sys
#查看存储卷
docker volume ls
#拉取镜像
docker pull prom/node-exporter
#运行容器
docker run -itd --name=node-exporter \
--restart=always \
-p 9100:9100 \
-v node_proc:/host/proc:ro \
-v node_sys:/host/sys:ro \
-v "/:/rootfs:ro" \
prom/node-exporter

4.2 防火墙开放端口

javascript 复制代码
#开放端口策略
firewall-cmd --zone=public --add-port=9100/tcp --permanent
#刷新防火墙配置
firewall-cmd --reload
#查看已开放端口
firewall-cmd --list-ports

五、主节点配置Prometheus

5.1 在主节点上修改Prometheus主配置文件

c 复制代码
#复制文件
docker cp prometheus:/etc/prometheus/prometheus.yml $PWD

#修改prometheus.yml文件
vim prometheus.yml

#在Prometheus配置文件按以下内容修改:
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
      labels:
        instance: prometheus

  - job_name: linux
    static_configs:
    - targets: ['ip地址:9100']					#被监控端的IP地址和端口号(有多个被监控端可用 逗号 隔开)
      labels:
        instance: localhost


#复制文件
docker cp $PWD/prometheus.yml prometheus:/etc/prometheus/prometheus.yml
#重启容器服务
docker restart prometheus



六、配置Grafana监控界面

6.1 添加Prometheus数据源

使用浏览器访问http:/ /10.10.10.65:3000监控平台,添加Prometheus数据源

6.2 选择Prometheus类型

6.3 输入主节点PrometheusIP地址及端口


6.4 点击sava保存

6.5 新增Dashboard Linux基础数据展示

6.6 填写模板id

更多grafana模板: https://grafana.com/grafana/dashboards 搜索 相应 dashboards的id如8919,12227

6.7 选择刚刚创建好的数据源

6.8 查看Dashboard

成功显示资源使用率可视化图形界面

总结

可以创建不同类型的数据源,比如MySQL、redis、MongoDB、PostgreSQL等等

选择不同数据源类型

可以在官网查看更多可视化模板
官网提供很多模板

相关推荐
yangmf20406 分钟前
如何防止 ES 被 Linux OOM Killer 杀掉
大数据·linux·elasticsearch·搜索引擎·全文检索
wanhengidc27 分钟前
企业为什么选择浙江电信服务器租用?
运维·服务器
yangshuo128142 分钟前
家用服务器 Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南
运维·服务器·ubuntu
I_Scholar1 小时前
mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz的下载安装和使用
linux·mysql
ziqibit1 小时前
Linux安全清理删除目录bash脚本
linux·bash
imhikaru1 小时前
Linux Shell 重定向与管道符号(>, >>, |)的实现机制
linux·服务器·网络
风筝超冷2 小时前
基于 Dify + vLLM插件 + Qwen3 构建问答机器人Docker版
运维·docker·容器
张三和李四的家2 小时前
ubuntu的libc 库被我 sudo apt-get --reinstall install libc6搞没了
linux·ubuntu
Lilith的AI学习日记2 小时前
n8n 中文系列教程_17. 为什么我的n8n数据库越来越大?解决方案全解析
网络·docker·容器·aigc·n8n
whoarethenext2 小时前
linux的时间轮
linux·运维·linq·时间轮