当前位置: 首页 > news >正文

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
image.png

二、部署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,测试通过才会正式保存。
image.png
image.png
image.png
image.png

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信息
image.png
image.png
选择好默认的数据源,点击import等待一会儿,就会自动跳转到对应的监控视图上
image.png
image.png
在search dashboard导航里也可以找到刚加的监控视图
image.png

五、部署Alertmanager

1、部署服务

alertmanager和Prometheus是独立发布的,使用前需要确认版本兼容关系,一般情况最新版之间都是兼容的

## 拉取镜像
docker pull prom/alertmanager## 启动容器
docker run --name alertmanager -d -p 9093:9093 prom/alertmanager

访问前端页面
image.png

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前端查看到刚配置的告警规则和告警触发情况
image.png
image.png

五、模拟触发告警

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

停用blackbox_exporter

systemctl stop blackbox-exporter

当blackbox_exporter停用后,可以看到带有lable:job="blackbox_exporter"的up数据变成0,触发了告警
image.png
image.png
由于告警规则中for: 1m1分钟后发送告警,因此alertmanager需要再触发告警规则(up!=1)一分钟后才会收到告警信息。
image.png
重新启动blackbox_exporter

systemctl start blackbox-exporter

image.png
告警已经关闭
image.png
image.png

相关文章:

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航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…...

如何为你的公司选择正确的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或者积分商城中投入大家感兴趣的物品或者虚拟产品&#xff…...

服务器重启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)官网 - 全球极客挚爱的技术成长平台…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...