docker-compose搭建prometheus以及grafana
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 | 角色 | 软件 |
主机1 | 192.168.1.30 | 服务端 | Prometheus、node-exporter、cadvisor、Grafana |
主机2 | 192.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数据源 然后再面板 导入数字添加即可
相关文章:

docker-compose搭建prometheus以及grafana
1. 什么是 Prometheus? Prometheus 是一个开源的系统监控和告警工具,由 SoundCloud 于 2012 年开始开发,现为 CNCF(Cloud Native Computing Foundation)项目之一。它特别适合云原生环境和容器编排系统(如 …...
进阶智能体实战八、需求分析助手(基于qwen多模态大模型对图文需求文档分析)(帮你生成 模块划分+页面+表设计、状态机、工作流、ER模型)
🚀 基于通义千问大模型的智能需求分析助手:一键生成需求分析、模块划分、ER 图和工作流! 在软件开发的早期阶段,需求分析是至关重要的一环。然而传统方式往往需要产品经理和架构师投入大量精力分析需求文档、划分模块、设计数据结构,效率低、容易出错。 为了解决这一痛…...
Git -> Git Stash临时保存当前工程分支修改
Git Stash 基本概念 git stash 用于临时保存当前工作目录的修改,让你可以快速切换到一个干净的工作状态,之后再恢复这些修改。 1. 保存当前修改 git stash # 或者添加描述信息 git stash save "修改描述"2. 查看stash列表 git stash list3…...

多线程和并发之线程
线程 前面讲到进程:为了并发执行任务(程序),现代操作系统才引进进程的概念 分析: 创建开销问题:创建一个进程开销:大 子进程需要拷贝父进程的整个地址空间 通信开销问题:进程间的通…...

apptrace 的优势以及对 App 的价值
官网地址:AppTrace - 专业的移动应用推广追踪平台 apptrace 的优势以及对 App 的价值 App 拉起作为移动端深度链接技术的关键应用,能实现从 H5 网页到 App 的无缝跳转,并精准定位到 App 内指定页面。apptrace 凭借专业的技术与丰富的经验…...

android studio debug调试出现 IOException异常
解决Android调试端口无法打开的问题,出现"Unable to open debugger port"错误时,可以进入app设置,选择Debugger选项,将Debug type更改为Java Only模式。这个方法适用于Android Studio调试时遇到的端口连接问题ÿ…...
PySpark 中使用 SQL 语句和表进行计算
PySpark 中使用 SQL 语句和表进行计算 PySpark 完全支持使用 SQL 语句和表进行 Spark 计算。以下是几种常见的使用方式: 1. 使用 Spark SQL from pyspark.sql import SparkSession# 创建 SparkSession spark SparkSession.builder.appName("SQLExample&quo…...
[Python] Python中的多重继承
文章目录 Lora中的例子 Lora中的例子 https://github.com/michaelnny/QLoRA-LLM/blob/main/qlora_llm/models/lora.py#L211C1-L243C10如果继承两个父类,并且父类的__init__参数不一样,则可以显式的调用父类init;如果用super().__init__()则需…...
在 RedHat 系统(RHEL 7/8/9)中安装 pythonnet 和 .NET Core 的完整指南
1. 安装 .NET Core SDK RHEL 8/9(推荐) bash # 添加微软仓库 sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm# 安装 .NET 8 SDK(包含运行时) sudo dnf install -y dot…...

vr中风--数据处理模型搭建与训练
# -*- coding: utf-8 -*- """ MUSED-I康复评估系统(增强版) 包含:多通道sEMG数据增强、混合模型架构、标准化处理 """ import numpy as np import pandas as pd from sklearn.model_selection import train_te…...
Socket网络编程之UDP套件字
基于的UDP套件字编程流程 UDP传输层的协议,面向无连接,数据报的传输层协议。 “ 无连接 ”:不可靠 在网络环境较好的情况下,UDP效率较高在网络环境较差的情况下,UDP可能存在丢包的情况同时一些“ 实时应用 ” 采用UD…...

前端学习(7)—— HTML + CSS实现博客系统页面
目录 一,效果展示 二,实现博客列表页 2.1 实现导航栏 2.2 实现个人信息 2.3 实现博客列表 三,实现博客正文页 3.2 复用 3.4 实现博客正文 四,实现博客登录页 4.1 版心 4.2 登录框 五,实现博客编辑页 5.1 …...
Bert和GPT区别
BERT(Bidirectional Encoder Representations from Transformers)和 GPT(Generative Pre-trained Transformer)都基于 Transformer 架构,但在设计目标、预训练任务和应用场景上有很大区别: 1. 架构方向性 B…...
聊一聊接口测试中缓存处理策略
目录 一、强制绕过缓存 添加时间戳参数 修改请求头 二、主动清除缓存 清除本地缓存 清除服务端缓存(需权限) 清除CDN缓存 三、测试缓存逻辑 首次请求获取数据 记录响应头中的缓存标识 验证缓存生效 测试缓存过期 四…...

RuoYi前后端分离框架实现前后端数据传输加密(二)之前端篇
一、背景 本文是RuoYi前后端分离框架实现前后端数据传输加密(一)之后端篇文章配套的,主要介绍前端对自定义字段传输加密的实现,两篇文章结合可以完整的完成RuoYi前后端分离框架对API通信过程中实现自定义字段加密传输。前端的加解密实现,不涉及到界面的修改,仅仅是方法的…...
如何使用.Net Reactor 批量加密 DLL
若在日常工作中加密操作的使用频率较高,每次启动程序并执行选择 DLL 文件等操作均会显得较为繁琐。在此,分享一种可提升操作效率的方法:通过命令行方式调用脚本,即可实现 DLL 或 Exe 文件的批量加密处理。具体操作如下:…...
基于视觉的车道线检测完整代码:让驾驶更安全的开源解决方案
基于视觉的车道线检测完整代码:让驾驶更安全的开源解决方案 【下载地址】基于视觉的车道线检测完整代码 这是一个基于视觉的车道线检测开源项目,提供完整的代码示例,采用滑动窗口算法实现。项目通过逐行扫描图像,精准识别曲线车道…...
Intellij IDEA 查找接口实现类的快捷键
快捷键是 IntelliJ IDEA(包括 PyCharm、WebStorm 等 JetBrains 家族 IDE) 中非常常用的代码导航功能。下面是对你提到的两个快捷键的详细解释和用途说明: 🔍 1. 查找接口的实现类(或方法的实现) …...

鸿蒙仓颉开发语言实战教程:自定义tabbar
大家周末好呀,今天继续分享仓颉语言开发商城应用的实战教程,今天要做的是tabbar。 大家都知道ArkTs有Tabs和TabContent容器,能够实现上图的样式,满足基本的使用需求。而仓颉就不同了,它虽然也有这两个组件,…...
03.MySQL表的操作详解
MySQL表的操作详解 MySQL 表的操作概述创建表 2.1 创建表的基本语法查看表结构修改表 4.1 新增列 4.2 修改列属性 4.3 修改列名 4.4 修改表名 4.5 删除列删除表 1. MySQL表的操作概述 MySQL表的操作是数据库开发和管理中的核心内容,主要涉及**数据定义语言&#…...

28 C 语言作用域详解:作用域特性(全局、局部、块级)、应用场景、注意事项
1 作用域简介 作用域定义了代码中标识符(如变量、常量、数组、函数等)的可见性与可访问范围,即标识符在程序的哪些位置能够被引用或访问。在 C 语言中,作用域主要分为三类: 全局作用域局部作用域块级作用域 需注意&am…...

MySQL 事务解析
1. 事务简介 事务(Transaction) 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 经典案例࿱…...

题海拾贝:压缩字符串
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞,关注&am…...
【Hive 运维实战】一键管理 Hive 服务:Metastore 与 HiveServer2 控制脚本开发与实践
一、引言 在大数据开发中,Hive 作为重要的数据仓库工具,其核心服务metastore(元数据服务)和hiveserver2(查询服务)的启停管理是日常运维的基础操作。手动执行命令启停服务不仅效率低下,还容易因…...

振动力学的三类基本问题
振动问题的分类依赖于分类的出发点,本文从系统论的角度来分析振动问题的分类。如图1,一个振动系统,包括三个方面:输入、系统特性(或称为系统模型)、输出。其中,输入指外界载荷,包括力…...
04.MySQL数据类型详解
MySQL数据类型详解 文章目录 MySQL数据类型数据类型分类数值类型 tinyint类型bit类型float类型decimal类型 字符串类型 char类型varchar类型char和varchar比较 时间日期类型enum和set类型数据类型选择的进阶技巧常见误区与解决方案性能优化与最佳实践 MySQL数据类型 数据类型…...

移动端 UI自动化测试学习之Appium框架(包含adb调试工具介绍)
文章目录 前言adb调试工具adb组成常用命令获取程序的包名和界面名文件传输发送文件到手机从手机中拉取文件 获取app启动时间获取手机日志其他命令 Appium 简介工作原理图 环境搭建安装客户端库(appium lib)安装Appium Server安装JDK(自行下载…...

CS144 - Lecture 2
CS144 - Lecture 1 TCP 这里就简单讲了一下它的基本性质,没啥好说的 UDP 提供不可靠的传输服务,我们的 DNS 服务和 DHCP 都是用的 UDP 协议。 对于 DNS 我们只是单纯地向 DNS 服务器发送域名,然后返回一个 IP,如果还需要建立…...

B站视频下载器 v1.0.4|免登录下载1080P视频
核心亮点 ✅ 无需登录下载1080P高清视频✅ 支持Windows/macOS双平台✅ 纯净无广告完全免费✅ 可单独下载视频/音频/弹幕/字幕/封面 三步极简操作 粘贴B站视频链接选择保存位置点击「开始下载」 特色功能 独立下载选项(视频/音频/弹幕/字幕/封面)登录…...

AIGC学习笔记(8)——AI大模型开发工程师
文章目录 AI大模型开发工程师007 LangChain之Model IO模块1 Model IO核心概念2 Model IO代码实战什么是LCEL?ModelModel的分类LLMsChatModel PromptPrompt templatesExample selectorsOutput parsers AI大模型开发工程师 007 LangChain之Model IO模块 1 Model IO核…...