docker-compose搭建prometheus以及grafana

article/2025/8/3 1:53:29

1. 什么是 Prometheus?

Prometheus 是一个开源的系统监控和告警工具,由 SoundCloud 于 2012 年开始开发,现为 CNCF(Cloud Native Computing Foundation)项目之一。它特别适合云原生环境和容器编排系统(如 Kubernetes)的监控。

Prometheus 的核心特点:

  • 多维数据模型:时间序列数据带有标签(key-value),支持灵活查询。

  • 拉模式采集:Prometheus 定期从被监控服务拉取指标数据。

  • 强大的查询语言 PromQL:支持丰富的指标计算和聚合。

  • 内置时序数据库:高效存储监控指标。

  • 支持告警管理:结合 Alertmanager 实现告警规则和通知。

  • 生态丰富:有多种导出器(exporters)可采集不同系统和应用指标。

2. Prometheus 工作原理

采集数据

Prometheus 通过 HTTP 协议周期性地拉取被监控目标的指标数据。被监控程序需要暴露符合 Prometheus 格式的指标端点(通常是 /metrics),例如:

  • node-exporter:采集 Linux 主机的系统指标(CPU、内存、磁盘、网络等)

  • cadvisor:采集容器指标

  • 应用自带的 metrics endpoint:Java、Go、Python 等语言有对应的客户端库,方便开发者直接暴露应用指标。

存储数据

Prometheus 自带高效的时序数据库,将采集到的指标以时间序列形式存储,支持数据压缩和快速检索。

查询和告警

使用 PromQL 查询语言,用户可以对指标做聚合、过滤、算术运算等操作,实现灵活的监控仪表盘和告警规则。

3. Prometheus 生态组件

  • Prometheus Server:核心组件,负责采集、存储和查询数据。

  • Exporters:辅助采集各种系统和服务指标的程序。例如:

    • node-exporter:主机资源监控

    • cadvisor:容器监控

    • mysqld-exporter:MySQL 监控

    • blackbox-exporter:HTTP、TCP 服务可用性探测

  • Alertmanager:管理告警规则,支持邮件、钉钉、微信、Slack 等多种通知方式。

  • Pushgateway:用于无法被 Prometheus 拉取指标的短暂任务推送指标。

  • Grafana:流行的开源可视化平台,通常与 Prometheus 配合使用,展示图表和告警。

4. Prometheus 的优势

  • 开箱即用:提供多种官方和第三方 Exporters,快速覆盖多种场景。

  • 灵活的指标模型和查询语言:支持多维标签,适合复杂业务监控需求。

  • 高度可扩展:支持服务发现,自动监控大规模集群。

  • 活跃社区和丰富文档:持续更新和优化。

5. 典型监控架构示例

graph LRPrometheus -->|Scrape metrics| ExportersExporters -->|Expose metrics| LinuxHostExporters -->|Expose metrics| ContainersExporters -->|Expose metrics| DatabasesPrometheus -->|Store & Query| TSDBPrometheus -->|Alert rules| AlertmanagerAlertmanager -->|Send alerts| NotificationChannelsPrometheus -->|Provide data| GrafanaGrafana -->|Visualize dashboards| Users

6. 结合 Grafana 的优势

Grafana 专注于数据可视化,支持多种数据源,包括 Prometheus。配合 Prometheus,Grafana 提供:

  • 灵活的图表和仪表盘定制

  • 实时监控界面

  • 告警通知管理

  • 多用户权限控制

一、搭建环境准备

主机ip角色软件
主机1192.168.1.30服务端        Prometheus、node-exporter、cadvisor、Grafana
主机2192.168.1.29客户端node-exporter、cadvisor

二、安装docker和docker-compose

这个在我前几期有,小白可以去看下,了解下

三、部署prometheus与grafana

创建prometheus目录 然后创建prometheus.yml

mkdir /data/prometheus && cd /data/prometheus
vim prometheus.yml
global:scrape_interval:     15sevaluation_interval: 15salerting:alertmanagers:- static_configs:- targets: ['192.168.1.30:9093']rule_files:- "node_down.yml"scrape_configs:- job_name: 'prometheus'static_configs:- targets: ['192.168.1.30:9090']- job_name: 'node'scrape_interval: 8sstatic_configs:- targets: ['192.168.1.30:9100', '192.168.1.29:9100']- job_name: 'cadvisor'scrape_interval: 8sstatic_configs:- targets: ['192.168.1.30:8088', '192.168.1.29:8088']

创建node_down.yml

vim node_down.yml
groups:
- name: node_downrules:- alert: InstanceDownexpr: up == 0for: 1mlabels:user: testannotations:summary: "Instance {{ $labels.instance }} down"description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."

然后创建服务端compose文件

vim docker-compose-prometheus.ymlversion: '2'networks:monitor:driver: bridgeservices:prometheus:image: prom/prometheuscontainer_name: prometheushostname: prometheusrestart: alwaysvolumes:- /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml- /data/prometheus/node_down.yml:/etc/prometheus/node_down.ymlports:- "9090:9090"networks:- monitorgrafana:image: grafana/grafanacontainer_name: grafanahostname: grafanarestart: alwaysports:- "3000:3000"networks:- monitornode-exporter:image: quay.io/prometheus/node-exportercontainer_name: node-exporterhostname: node-exporterrestart: alwaysports:- "9100:9100"networks:- monitorcadvisor:image: google/cadvisor:latestcontainer_name: cadvisorhostname: cadvisorrestart: alwaysvolumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:roports:- "8088:8080"networks:- monitor

然后docker-compose -f docker-compose-prometheus.yml up -d启动

在客户端创建docker-compose文件

vim docker-compose.ymlversion: '2'networks:monitor:driver: bridgeservices:node-exporter:image: quay.io/prometheus/node-exportercontainer_name: node-exporterhostname: node-exporterrestart: alwaysports:- "9100:9100"networks:- monitorcadvisor:image: google/cadvisor:latest#image:swr.cn-north-4.myhuaweicloud.com/ddn-k8s/gcr.io/cadvisor/cadvisor:v0.51.0-linuxarm64         ##arm架构的可以用下面这个镜像  container_name: cadvisorhostname: cadvisorrestart: alwaysvolumes:- /:/rootfs:ro- /var/run:/var/run:rw- /sys:/sys:ro- /var/lib/docker/:/var/lib/docker:roports:- "8088:8080"networks:- monitor

然后docker-compose up -d启动

浏览器访问http://192.168.1.30:9090/targets

四、配置grafana

http://192.168.1.30:3000/ 浏览器访问

账号密码是admin/admin   登录会让你修改   如果不修改跳过即可

配置的话就不多说了 比较简单  先添加prometheus数据源 然后再面板 导入数字添加即可


http://www.hkcw.cn/article/tUAqUPxJuF.shtml

相关文章

AI科技前沿动态:5.26 - 5.30 一周速览

目录 ⭐ 本周热点💡 阿里巴巴开源自主搜索 AI 智能体 WebAgent💡 我国首个软件开发 AI 智能体标准发布,20 余家巨头联手参编💡 刚刚,新版DeepSeek-R1正式开源!直逼o3编程强到离谱,一手实测来了 …

【google 论文】Titans: Learning to Memorize at Test Time

核心思想与贡献: 这篇论文的核心贡献在于提出了一种新的神经网络长期记忆模块 (neural long-term memory module),并基于此构建了一个名为 Titans 的新型系列架构。这个架构旨在克服现有模型(如Transformers)在处理超长序列和长期…

VASP 教程:VASP 结合 Phonopy 计算硅的比热容

VASP 全称为 Vienna Ab initio Simulation Package(The VASP Manual - VASP Wiki)是一个计算机程序,用于从第一性原理进行原子尺度材料建模,例如电子结构计算和量子力学分子动力学。 Phonopy(Welcome to phonopy — Ph…

企业数字化转型的7个难点

数字化转型不是一个有始有终的项目,而是一个持续变革的过程,过程漫长,且险象环生。需要领导者带领企业从成功或不成功的经验里持续反思、持续学习。 近年来,以移动互联网、云计算、大数据、人工智能等为代表的新一代数字化技术正在…

华为OD机试真题——简易内存池(2025A卷:200分)Java/python/JavaScript/C++/C/GO最佳实现

2025 A卷 200分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 本文收录于专栏:《2025华为OD真题目录+全流程解析/备考攻略/经验分享》 华为OD机试真题《简易…

mysql-mysql源码本地调试

前言 先进行mysql源码本地编译:mysql源码本地编译 1.本地调试 这里以macbook为例 1.使用vscode打开mysql源码 2.创建basedir目录、数据目录、配置文件目录、配置文件 cd /Users/test/ mkdir mysqldir //创建数据目录和配置目录 cd mysqldir mkdir conf data …

华为OD机试真题——查找接口成功率最优时间段(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

硬件I2C和软件I2C的区别

硬件I2C和软件I2C的区别 一、硬件I2C 1、硬件IC的局限性及学习意义 尽管硬件IC外设在STM32等微控制器中提供了标准化的通信支持,但在实际应用中,其稳定性可能存在问题。例如,某些情况下外设会因事件检测异常而进入死锁状态,仅能…

PyCharm接入DeepSeek,实现高效AI编程

介绍本土AI工具DeepSeek如何结合PyCharm同样实现该功能。 一 DeepSeek API申请 首先进入DeepSeek官网:DeepSeek 官网 接着点击右上角的 “API 开放平台“ 然后点击API keys 创建好的API key,记得复制保存好 二 pycharm 接入deepseek 首先打开PyCh…

大模型-attention汇总解析之-MQA

MQA,即 “Multi-Query Attention”,是减少 KV Cache 的一次的一种大胆尝试,首次提出自《Fast Transformer Decoding: One Write-Head is All You Need》, 在2019 年减少 KV Cache 就已经是研究人员非常关注的一个课题了。MQA 的思…

华为OD机试真题——游戏分组王者荣耀(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…

主流 AI IDE 之一的 Windsurf 使用入门

一、Windsurf 的常见入门界面 以上是本次展示Windsurf版本信息。 1.1 个人配置中心 1.2 AI 助手快捷设置 1.3 使用额度查看页面 1.4 智能助手 Windsurf 编辑器中 AI 助手名称 :Cascade 。打开 Cascade 窗口,开始聊天就可以了。方框里有写和聊两种状态锁…

大数据量下的数据修复与回写Spark on Hive 的大数据量主键冲突排查:COUNT(DISTINCT) 的陷阱

背景与问题概述 这一周(2025-05-26-2026-05-30)我在搞数据拟合修复优化的任务,有大量的数据需要进行数据处理及回写,大概一个表一天一分区有五六千万数据,大约一百多列的字段。 具体是这样的我先取档案&#x…

长尾关键词优化驱动SEO增长

内容概要 在搜索引擎优化领域,长尾关键词的精细化运营已成为突破流量瓶颈的核心突破口。相较于通用型关键词,长尾词凭借其低竞争度、高转化潜力的特性,能够精准捕捉用户搜索意图,为网站带来更具价值的自然流量。本文将从战略定位…

数字孪生驱动的智慧水务管网智能运维系统实践

引言:数字孪生赋能城市水务基础设施智能化转型 在新型智慧城市架构中,地下供水管网作为城市生命线工程,其数字化重构已成为市政基础设施现代化的核心命题。本文以某省会城市智慧水务示范项目为蓝本,系统阐述数字孪生技术在供水管…

数据资产——立法与实操指南

5月27日,数据资产一千零一夜,华东数交周二夜谈第三十三期圆满结束,上海国瓴律师事务所首席合伙人、管理委员会主席高慧、天册(上海)律师事务所律师邓亚军;数据宝网络科技有限公司数据资产研究院高级研究员王国辉共同围绕“数据资产…

放假带出门的充电宝买哪种好用耐用?倍思超能充35W了解一下!

端午节的到来和毕业季的临近,让很多人开始计划出游或长途旅行。而在旅途中,一款好用耐用的充电宝可以省不少事。今天,我们就来聊聊放假带出门的充电宝买哪种好用耐用,看看为什么倍思超能充35W更适合带出门~ 一、为什么需要一款好用…

ONLYOFFICE文档API:更强的安全功能

在数字化办公时代,文档的安全性与隐私保护已成为企业和个人用户的核心关切。如何确保信息在存储、传输及协作过程中的安全,是开发者与IT管理者亟需解决的问题。ONLYOFFICE作为一款功能强大的开源办公套件,不仅提供了高效的文档编辑与协作体验…

day14 leetcode-hot100-27(链表6)

21. 合并两个有序链表 - 力扣(LeetCode) 1. 暴力法 思路 创建一个空节点,用来组装这两个链表,谁小谁就是下一个节点。 知识 创建空节点:ListNode n1 new ListNode(-1); 具体代码 /*** Definition for singly-l…

DALI DT6与DALI DT8介绍

“DT”全称Device Type,是DALI-2 标准协议中的IEC 62386-102(即为Part 102)部分对不同类型的控制设备进行一个区分。不同的Device Type代表不同特性的控制设备,也代表了这种控制设备拥有的扩展的特性。 在DALI(数字可寻址照明接口&#xff09…