使用Docker搭建Prometheus+Grafana运维监控可视化

1.项目

今天和大家分享一个运维监控可视化工具 —— Prometheus(普罗米修斯),通过部署Prometheus+Grafana来监控Linux主机,实现运维监控可视化,目前 Prometheus 已经广泛用于 Kubernetes 集群的监控系统中

1.1.项目介绍

Prometheus的架构由四个主要组件组成:

  1. Prometheus Server :Prometheus Server是Prometheus的核心组件,主要负责从各个目标(target)中收集指标(metrics)数据,并对这些数据进行存储、聚合和查询。

  2. Client Libraries :Prometheus提供了多种客户端库,用于在应用程序中嵌入Prometheus的指标收集功能。

  3. Exporters :Exporters是用于将第三方系统的监控数据导出为Prometheus格式的组件。Prometheus支持多种Exporters,例如Node Exporter、MySQL Exporter、HAProxy Exporter等。

  4. Alertmanager:Alertmanager是Prometheus的告警组件,用于根据用户定义的规则对监控数据进行告警。

同时Prometheus有以下优点

  1. 灵活的数据模型:Prometheus采用的是key-value对的形式存储指标数据,每个指标都可以包含多个标签(labels),这样可以更加灵活地描述指标数据

  2. 高效的存储和查询:Prometheus使用自己的时间序列数据库,可以高效地存储和查询大量的指标数据。

  3. 强大的可视化和告警功能:Prometheus提供了Web界面和API,可以方便地展示和查询监控数据。

  4. 可扩展性强:Prometheus的架构非常灵活,可以根据需要选择合适的组件进行配置。

  5. CNCF的成员项目:Prometheus作为CNCF的项目之一,得到了广泛的关注和支持,并且得到了来自全球各地的贡献者的积极参与和开发。

1.1.项目展示

2.相关地址

官方GitHub地址: https://github.com/prometheus/prometheus

官网地址:https://prometheus.io/

3.搭建环境

  • 服务器:建议在云服务器上搭建,特别是涉及到Docker镜像,国内服务器访问国外源较慢,建议使用海外服务器。如果使用国内云服务器,建议使用国内镜像源,否则可能会出现镜像下载失败的情况。各个大厂的服务器基本都有自己的镜像源,具体可以参考各个大厂的文档。

  • 资源配置:2核2G 30G硬盘
    建议服务器内存1G以上,由于国内服务器访问海外源较慢,这边为了方便演示直接使用海外服务器搭建,如国内项目建议使用国内服务器。

  • 服务器系统:我们这里使用的Linux发型版本是 Debian-11。

  • 【必需】安装Docker:安装好 Docker、Docker-compose

  • 【非必需】域名一枚,可用于解析到服务器上使用域名访问

  • 【非必需】安装Nginx:安装好 Nginx,用于反向代理

  • 【非必需】安装SSL证书:安装好 SSL 证书,用于 HTTPS 访问

4.搭建视频

本次操作没有录制视频,有需要的可以私信我,以后会录制视频。

5.搭建方式

5.1 安装docker和docker-compose

如何在服务器上安装docker和docker-compose之前写过相关的教程这里就不再赘述了。

5.2 安装Grafana

Grafana下载地址:https://grafana.com/grafana/download

我们这里使用docker搭建

复制

1
docker run -d --name=grafana -p 3000:3000 grafana/grafana-enterprise

docker拉取完就安装完成了

访问Grafana,浏览器输入IP:端口,如:服务器IP:3000

默认账号密码为:admin / admin

第一次登录需要修改密码,这个按照自己需求修改登录密码

进去之后首页

5.3 安装Prometheus

依次下载Prometheus镜像包

1
2
docker pull prom/node-exporter
docker pull prom/prometheus

运行node-exporter的docker

1
docker run -d -p 9100:9100  -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro"  --net="host"  prom/node-exporter

访问 http://服务器:9100/metrics 看看是否有数据

5.4 启动prometheus

在opt目录下建立promethes文件夹

1
mkdir /opt/prometheus

打开/opt/prometheus/的目录

1
cd /opt/prometheus/

使用vim编辑prometheus.yml文件

1
vim prometheus.yml

输入内容如下(注意:localhost记得改为自己的服务器IP)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
global:
抓取间隔,60秒向目标抓取一次数据
scrape_interval: 60s
evaluation_interval: 60s

这里表示抓取对象的配置
scrape_configs:
- job_name: 'prometheus'
重写了全局抓取间隔时间,由60秒重写成30秒
scrape_interval: 30s
static_configs:
- targets: ['localhost:9090']
- job_name: 'linux'
static_configs:
- targets: ['localhost:9100']

输入修改完IP按esc键 输入 :wq 保存退出

启动Prometheus

1
docker run -d  -p 9090:9090  -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

输入完打开 http://服务器IP:9090/query 显示以下界面

显示绿色UP则为运行正常

5.5 Grafana添加数据源

回到 http://服务器IP:3000/ Grafana添加prometheus数据源

选择prometheus

此行输入 http://服务器IP:9090 后滑下去直接点击save保存

5.6 Grafana添加面板

回到首页点击DASHBOARDS

选择导入

访问官方面板下载地址:https://grafana.com/grafana/dashboards

此处输入项目ID

比如选中项目之后可以复制这个项目的ID填上去

填好ID后我们需要选择prometheus,然后点击import导入即可

这样面板信息就出来了

6.结尾的最后释疑

到此,可能你还有个疑问,既然Prometheus有报表展示功能,为什么还要引入Grafana?

其实,在监控系统中,Prometheus 和 Grafana 各自扮演着不同的角色,它们结合使用能发挥更大的价值。

  • Prometheus 自带的 Web UI 主要用于简单的数据查询和图表展示,功能较为基础,而Grafana 提供专业级的可视化面板,支持丰富的图表类型(折线图、柱状图、仪表盘等)和灵活的布局。
  • Grafana 支持创建和管理复杂的仪表盘,可以同时展示多个相关指标,提供模板变量功能,可以动态切换查看不同主机/服务的监控数据。
  • Grafana 的界面更加美观直观,适合非技术人员查看,支持面板注释、阈值标记、时间范围快捷选择等实用功能。
  • Prometheus 支持多种数据源,包括 Prometheus 自身、MySQL、Redis 等,而 Grafana 只支持 Prometheus 数据源。
  • Grafana方便导出和导入仪表盘,便于团队协作。

总之,Prometheus 和 Grafana 结合使用,可以更全面、更高效地监控系统,同时也能提供更好的用户体验。


使用Docker搭建Prometheus+Grafana运维监控可视化
https://jycpp.github.io/24-06-10-Docker搭建Prometheus和Grafana.html
作者
Jet Yan
发布于
2024年6月10日
许可协议