Docker环境搭建Prometheus实验环境
环境:
OS:Centos7
Docker: 20.10.9 - Community
Centos部署Docker
【Kubernetes】Centos中安装Docker和Minikube_云服务器安装docker和minikube_DivingKitten的博客-CSDN博客
一、拉取Prometheus镜像
## 拉取镜像
docker pull prom/prometheus
## 启动promtheus
docker run --name prometheus -p 9090:9090 -d prom/prometheus## copy 配置文件至本地
docker cp prometheus:/etc/prometheus/prometheus.yml ./
用浏览器访问Prometheus前端:http://192.168.56.110:9090

二、部署node_exporter
1、安装服务
从github下载发行版,通过systemd进行管理。
github:node_exporter
## 从github下载发行版
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz## 解压文件
tar -xf node_exporter-1.6.1.linux-amd64.tar.gz## 创建软链接方便以后升级
ln -s ./node_exporter-1.6.1.linux-amd64 ./node_exporter
创建service文件,保存在/usr/lib/systemd/system/目录下
[Unit]
Description=Prometheus Node Exporter
After=network.target[Service]
Type=simple
User=root
Group=root
ExecStart=/root/docker/prometheus/node_exporter/node_exporter
Restart=on-failure[Install]
WantedBy=multi-user.target
1、ExecStart表示执行文件位置,根据实际情况具体修改
2、node_exporter默认监控端口是9100,如需修改端口,可以追加启动参数:
–web.listen-address=:8100
启动node_exporter服务,并设置为开机器自动启动
systemctl daemon-reload
systemctl start node-exporter
systemctl enable node-exporter## 检查端口
$ netstat -nltp | grep 9100
tcp6 0 0 :::9100 :::* LISTEN 23431/node_exporter
## 检查监控可用性
$ curl http://127.0.0.1:9100/metrics
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 3.0135e-05
go_gc_duration_seconds{quantile="0.25"} 3.6243e-05
go_gc_duration_seconds{quantile="0.5"} 3.9298e-05
go_gc_duration_seconds{quantile="0.75"} 4.4272e-05
go_gc_duration_seconds{quantile="1"} 0.000111722
go_gc_duration_seconds_sum 0.080724852
go_gc_duration_seconds_count 1900
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 7
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.19.1"} 1
.....
....
2、配置target
在Prometheus配置scrape_configs中追加target
scrape_configs:- job_name: "node_exporter"static_configs:- targets: ["192.168.56.110:9100"]
由于Prometheus运行在容器中,所以不能通过127.0.0.1找到宿主机上的node_exporter,可以通过宿主机的网卡IP进行访问
然后将配置拷贝到容器中,重启Prometheus或者调用接口重载配置
## 覆盖配置
docker cp ./prometheus.yml prometheus:/etc/prometheus/prometheus.yml
## 重启Prometheus
docker restart prometheus
如果是将配置文件挂在到容器中,则不需要每次都copy配置至容器内
三、部署Blackbox_exporer
1、安装服务
流程和node_exporter部署相同,从github下载发行版,通过systemd进行管理。
github:blackbox_exporter
## 从github下载发行版
wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.23.0/blackbox_exporter-0.23.0.linux-amd64.tar.gz## 解压文件
tar -xf blackbox_exporter-0.23.0.linux-amd64## 创建软链接方便以后升级
ln -s ./blackbox_exporter-0.23.0.linux-amd64 ./blackbox_exporter
创建service文件,保存在/usr/lib/systemd/system/目录下
[Unit]
Description=Prometheus blackbox Exporter
After=network.target[Service]
Type=simple
User=root
Group=root
ExecStart=/root/docker/prometheus/blackbox_exporter/blackbox_exporter --config.file=/root/docker/prometheus/blackbox_exporter/blackbox.yml
Restart=on-failure[Install]
WantedBy=multi-user.target
1、ExecStart表示执行文件位置,根据实际文件位置修改
2、–config.file根据实际blackbox_exporter配置配置修改
2、node_exporter默认监控端口是9115,如需修改端口,可以追加启动参数:
–web.listen-address=:9195
启动blackbox_exporter服务,并设置为开机器自动启动
systemctl daemon-reload
systemctl start node-exporter
systemctl enable node-exporter## 检查端口
[root@VM-8-11-centos system]# netstat -nltp | grep 9115
tcp6 0 0 :::9115 :::* LISTEN 10150/blackbox_expo
2、配置target
在Prometheus配置scrape_configs中追加target
scrape_configs:- job_name: "blackbox_exporter"metrics_path: /probestatic_configs:- targets: ["192.168.56.110:9195"]relabel_configs:- source_labels: [__address__]target_label: __param_target- source_labels: [__param_target]target_label: instance
由于Prometheus运行在容器中,所以不能通过127.0.0.1找到宿主机上的node_exporter,可以通过宿主机的网卡IP进行访问
然后重启Prometheus或者调用接口重载配置
## 覆盖配置
docker cp ./prometheus.yml prometheus:/etc/prometheus/prometheus.yml
## 重启Prometheus
docker restart prometheus
四、部署Grafana
1、安装服务
拉取镜像并启动
docker pull grafana/grafana-ossdocker run -d -p 3000:3000 --name grafana grafana/grafana-oss
初次登录没有密码,然后设置数据源来自Prometheus,测试通过才会正式保存。




2、添加视图
在grafana的dashboard市场里有很多现成的视图,可以直接导入,node_exporter和blackbox_exporter都有现成的视图
官方dashboard市场:
Dashboards | Grafana Labs
Node_exporter视图:
Node Exporter Full | Grafana Labs
Blackbox_exporter视图:
Prometheus Blackbox Exporter | Grafana Labs
导航到Dashboard–> import ,填入从官网copy的ID,本地的grfana会自动到官网下载对应dashboard的json信息


选择好默认的数据源,点击import等待一会儿,就会自动跳转到对应的监控视图上


在search dashboard导航里也可以找到刚加的监控视图

五、部署Alertmanager
1、部署服务
alertmanager和Prometheus是独立发布的,使用前需要确认版本兼容关系,一般情况最新版之间都是兼容的
## 拉取镜像
docker pull prom/alertmanager## 启动容器
docker run --name alertmanager -d -p 9093:9093 prom/alertmanager
访问前端页面

2、配置Prometheus
在Prometheus配置中修改alertmanager的IP,由于alertmanager也运行在容器当中,因此也通过宿主机IP+端口的方式进行访问
alerting:alertmanagers:- static_configs:- targets:- 192.168.56.110:9093
3、添加告警规则
然后添加告警规则,创建rules.yml文件
groups:
- name: Instancerules:- alert: InstanceDownexpr: up != 1for: 1mlabels:severity: infoannotations:summary: "{{ $labels.instance }}"description: "{{ $labels.instance }} of job {{ $labels.job }} has been in an unhealthy state for more than 1 minutes."
然后将rules文件复制到容器中,确认Prometheus已添加rules文件,重启Prometheus
rule_files:- "/etc/prometheus/rules.yml"
docker cp ./rules.yml prometheus:/etc/prometheus/rules.yml
docker restart prometheus
然后可以在Prometheus前端查看到刚配置的告警规则和告警触发情况


五、模拟触发告警
前面添加的规则时当有一个target的监控任务指标up!=0触发,因此手动停止blackbox_exporter来触发一个告警。
停用blackbox_exporter之前,检索up

停用blackbox_exporter
systemctl stop blackbox-exporter
当blackbox_exporter停用后,可以看到带有lable:job="blackbox_exporter"的up数据变成0,触发了告警


由于告警规则中for: 1m1分钟后发送告警,因此alertmanager需要再触发告警规则(up!=1)一分钟后才会收到告警信息。

重新启动blackbox_exporter
systemctl start blackbox-exporter

告警已经关闭


相关文章:
Docker环境搭建Prometheus实验环境
环境: OS:Centos7 Docker: 20.10.9 - Community Centos部署Docker 【Kubernetes】Centos中安装Docker和Minikube_云服务器安装docker和minikube_DivingKitten的博客-CSDN博客 一、拉取Prometheus镜像 ## 拉取镜像 docker pull prom/prometheus ## 启动p…...
Python Qt学习(七)Listview
源代码: # -*- coding: utf-8 -*-# Form implementation generated from reading ui file qt_listview.ui # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not…...
哈希表HashMap(基于vector和list)
C数据结构与算法实现(目录) 1 什么是HashMap? 我们这里要实现的HashMap接口不会超过标准库的版本(是一个子集)。 HashMap是一种键值对容器(关联容器),又叫字典。 和其他容易一样…...
go中的函数
demo1:函数的几种定义方式 package mainimport ("errors""fmt" )/* 函数的用法 跟其他语言的区别:支持多个返回值*///函数定义方法1 func add(a, b int) int {return a b }//函数定义方法2 func add2(a, b int) (sun int) {sun a breturn s…...
小试 InsCode AI 创作助手
个人理解: 自ChatGPT新版现世,一直被视面替代人工工作的世大挑战,各类人工智能语言生成工目层出不穷,也在不断影响着我们日常的工作和生活 小试CSDN的InsCode AI: - 基本概念查询方便,与个人了解&…...
粉丝经验分享:13:00 开始的面试,13:06 就结束了,问题真是变态
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
SASS的@规则
1,import sass扩展了import导入,对于css,import导入在页面加载的时候去下载导入的外部文件,而sass的导入,在编译成css文件的时候就将外部的sass文件导入合并编译成一个css文件。 他支持同时导入多个文件;…...
【C++初阶】模拟实现优先级队列priority_queue
👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞…...
如何为你的公司选择正确的AIGC解决方案?
如何为你的公司选择正确的AIGC解决方案? 摘要引言词汇解释(详细版本)详细介绍1. 确定需求2. 考虑技术能力3. 评估可行性4. 比较不同供应商 代码快及其注释注意事项知识总结 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&…...
Windows下将nginx等可执行文件添加为服务
Windows下将nginx等可执行文件添加为服务 为什么将可执行文件添加为服务?将可执行文件添加为服务的步骤步骤 1:下载和安装 Nginx步骤 2:添加为服务方法一:使用 Windows 自带的 sc 命令方法二:使用 NSSM(Non…...
视觉SLAM14讲笔记-第4讲-李群与李代数
李代数的引出: 在优化问题中去解一个旋转矩阵,可能会有一些阻碍,因为它对加法导数不是很友好(旋转矩阵加上一个微小偏移量可能就不是一个旋转矩阵),因为旋转矩阵本身还有一些约束条件,那样再求…...
浅析Redis(1)
一.Redis的含义 Redis可以用来作数据库,缓存,流引擎,消息队列。redis只有在分布式系统中才能充分的发挥作用,如果是单机程序,直接通过变量来存储数据是更优的选择。那我们知道进程之间是有隔离性的,那么re…...
【每日一题】2337. 移动片段得到字符串
【每日一题】2337. 移动片段得到字符串 2337. 移动片段得到字符串题目描述解题思路 2337. 移动片段得到字符串 题目描述 给你两个字符串 start 和 target ,长度均为 n 。每个字符串 仅 由字符 ‘L’、‘R’ 和 ‘_’ 组成,其中: 字符 ‘L’…...
MySQL 数据库常用命令大全(详细)
文章目录 1. MySQL命令2. MySQL基础命令3. MySQL命令简介4. MySQL常用命令4.1 MySQL准备篇4.1.1 启动和停止MySQL服务4.1.2 修改MySQL账户密码4.1.3 MySQL的登陆和退出4.1.4 查看MySQL版本 4.2 DDL篇(数据定义)4.2.1 查询数据库4.2.2 创建数据库4.2.3 使…...
中国移动加大布局长三角,打造算力产业新高地
8月27日,以“数实融合算启未来”为主题的2023长三角算力发展大会在苏州举办,大会启动了长三角算力调度枢纽,携手各界推动算力产业高质量发展。 会上,移动云作为第一批算力资源提供方,与苏州市公共算力服务平台签订算力…...
话费、加油卡、视频会员等充值接口如何对接?
现在很多商家企业等发现与用户保持粘性是越来越难了,大多数的用户活跃度都很差,到底该怎么做才能改善这种情况呢? 那么我们需要做的就是投其所好,在与用户保持粘性的app或者积分商城中投入大家感兴趣的物品或者虚拟产品ÿ…...
服务器重启MongoDB无法启动
文章目录 服务器重启MongoDB无法启动背景规划实施 总结 服务器重启MongoDB无法启动 背景 数据库服务器的CPU接近告警值了,需要添加CPU资源,于是乎就在恰当的时间对服务器进行关机,待添加完资源后开机,这样就完成了CPU资源的添加…...
深度刨析数据在内存中的存储
✨博客主页:小钱编程成长记 🎈博客专栏:进阶C语言 深度刨析数据在内存中的存储 1.数据类型介绍1.1 类型的基本归类 2.整形在内存中的存储2.1 原码、反码、补码2.2 大小端介绍 3.浮点型在内存中的存储3.1 一个例子3.2 浮点数的存储规则3.3指数…...
理解FPGA中的亚稳态
一、前言 大家应该经常能听说到亚稳态这个词,亚稳态主要是指触发器的输出在一段时间内不能达到一个确定的状态,过了这段时间触发器的输出随机选择输出0/1,这是我们在设计时需要避免的。本文主要讲述了FPGA中的亚稳态问题,可以帮助…...
Leetcode86. 分隔链表
给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台…...
去水印工具免费版哪个好用?2026免费去水印工具对比与选择指南
在日常工作和创意制作中,我们经常需要处理带有水印的图片和视频。无论是为了素材库积累、内容二次创作,还是个人学习参考,选择一款合适的去水印工具至关重要。市面上众多免费去水印工具各具特色,有的专注速度,有的擅长…...
星火动漫 × 火山引擎:用Seedance重构创作链路加速释放AI漫剧生产力
20 天能做什么?在传统动漫制作的管线里,这点时间或许只够画完一套分镜稿。但就是在这短短 20 天内,一部名为《西游:五指山上贴瓷砖》的漫剧不仅完成了全流程制作,更一路杀出重围,连续多日霸榜。若按常规路径…...
Verilator仿真保姆级避坑指南:从安装最新版到用GTKWave看波形的完整流程
Verilator仿真实战手册:从源码编译到波形调试的深度解析 1. 为什么选择Verilator:开源EDA工具链的新选择 在数字电路设计领域,仿真验证环节往往决定着项目成败。传统商业仿真器虽然功能强大,但高昂的授权费用和复杂的配置流程让许…...
音乐解锁神器:3种方法让加密音乐重获自由
音乐解锁神器:3种方法让加密音乐重获自由 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitcode.c…...
Armv8/v9架构SCTLRMASK_EL2寄存器解析与应用
1. AArch64系统控制寄存器基础解析在Armv8/v9架构中,系统控制寄存器(System Control Registers)是处理器状态配置的核心组件,它们分布在不同的异常级别(EL0-EL3),用于管理处理器行为、内存系统、安全状态等关键功能。这些寄存器通常通过MRS/M…...
RTB点击率预估中的长尾失衡与价值重标定
1. 项目概述:当广告竞价遇上“长尾陷阱”——为什么实时竞价系统里99%的流量不说话,却决定着100%的效果你有没有遇到过这样的情况:训练了一个看起来AUC高达0.92的点击率预估模型,上线后CTR却比老模型还低0.3个百分点?或…...
C#字节序反转:从原理到工业级实现
1. 字节序反转不是“字节倒序”,而是数据语义的精准翻转很多人第一次看到“字节序反转”这个词,下意识就去写Array.Reverse(bytes)——结果一测发现:整数读出来完全不对。我去年在做工业PLC通信协议解析时就栽过这个跟头:设备返回…...
RAG幻觉根治手册:系统化消除检索增强生成中的错误输出
RAG 系统产生幻觉不是偶然,而是有明确的根因。本文从幻觉的成因分类入手,给出每类幻觉的系统性解决方案,帮助你把 RAG 准确率从 70% 提升到 95%。RAG 幻觉的三大根源在实践中,RAG 幻觉来自三个层面:检索层幻觉…...
2026年主流AI论文写作软件全攻略(含保姆级操作教程)
以下是当前学术圈口碑TOP的6款AI写论文工具,覆盖从选题、开题到降重、答辩的论文全流程,剔除冗余工具,每款均附分步骤实操指南场景适配技巧,重点突出中文论文适配性,新手也能快速上手,效率翻倍。一、全流程…...
嵌入式Qt GUI与ESP32串口通信控制RGB灯实战指南
1. 项目概述与核心价值最近在做一个智能家居控制面板的原型,核心需求是通过一个图形界面来控制RGB氛围灯的颜色和亮度。硬件部分用的是常见的ESP32开发板,搭配一个可寻址的WS2812灯带。软件层面,我选择了在嵌入式Linux平台上用Qt来构建这个控…...
