通过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等等

选择不同数据源类型

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

相关推荐
月熊15 分钟前
在root无法通过登录界面进去时,通过原本的普通用户qiujian如何把它修改为自己指定的用户名
linux·运维·服务器
大江东去浪淘尽千古风流人物1 小时前
【DSP】向量化操作的误差来源分析及其经典解决方案
linux·运维·人工智能·算法·vr·dsp开发·mr
打码人的日常分享1 小时前
智慧城市一网统管建设方案,新型城市整体建设方案(PPT)
大数据·运维·服务器·人工智能·信息可视化·智慧城市
qinyia2 小时前
WisdomSSH解决docker run命令中log-opt参数不支持导致的容器创建失败问题
java·docker·eureka
赖small强2 小时前
【Linux驱动开发】NOR Flash 技术原理与 Linux 系统应用全解析
linux·驱动开发·nor flash·芯片内执行
一条懒鱼6662 小时前
K8S-Ingress资源对象
云原生·容器·kubernetes
风掣长空2 小时前
Google Test (gtest) 新手完全指南:从入门到精通
运维·服务器·网络
luback2 小时前
前端对Docker简单了解
运维·docker·容器
帷幄庸者3 小时前
记一次Kubernetes“僵尸”挖矿病毒的排查与歼灭全录
云原生·容器·kubernetes
IT运维爱好者3 小时前
【Linux】LVM理论介绍、实战操作
linux·磁盘扩容·lvm