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

Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用

目录

开始

Prometheus 介绍

基本原理

组件介绍

下文部署组件的工作方式

Prometheus 生态安装(Mac)

安装 prometheus

安装 grafana

安装 node_exporter

Prometheus 生态安装(Docker)

安装 prometheus

 安装 Grafana

安装 node_exporter

Grafana 实现可视化

导入 Prometheus 数据源

引入仪表盘


开始


Prometheus 介绍

基本原理

prometheus 是一个开源的系统监控和报警系统,本身是机遇 Go 开发的一套开源的系统监控报警框架和时序列数据库(TSDB)

基本原理:通过 HTTP 协议周期性的抓取被监控组件的状态,任意组件只要提供对应的 HTTP 接口就可以接入监控,不需要任何的 SDK 或者其他集成过程.   这样非常适合做虚拟化环境监控,例如 VM、Docker、Hubernetes 等,被监控组件信息的 HTTP 接口叫做 exporter.  

组件介绍

  • Prometheus server:是 Prometheus 架构中的核心组件,基于 go 语言编写,可以独立部署在服务器上、云主机、Docker 容器中. 主要用于收集目标数据,并将采集到的数据按照时间序列存储在本地磁盘的时序数据库中,对外可提供数据查询支持、自定义 PromeQL 语言(对数据进行查询分析)、告警规则配置管理.
  • Client Library:用于监测应用程序代码的客户端库.  在监控服务前,需要向客户端代码添加监测实现 Prometheus 中的 metric 的类型.
  • Exporter:数据采集者,用于输出被监控组件信息的 HTTP 接口.
  • Pushgateway:用于支持短期临时 或 批量计划任务工作的汇聚节点.  主要用于短期 job,此类存在的 job 时间较短,可能 Prometheus 在 pull 之前就自动消失了.  所以针对这种 job,就设计成可直接向 Pushgateway 推送 metric,这样 Prometheus 就可以定时去 Pushgateway 中拉去 metric.         总的来讲,Pushgateway 是一个组件,prometheus server 默认通过 exporter 主动 pull 获取数据,pushgateway 则是通过被动方式推动数据到 prometheus server.  用户可以写一写自定义的监控脚本把需要监控的数据发送给 pushgateway,然后 pushgateway 把数据发送给 prometheus server.
  • Alertmanager:用于处理 Prometheus 服务器发送的 alerts 信息,对其去重数据、分组 最后路由到正确的接受方式(邮箱、钉钉...),发出告警,支持丰富的告警方式.
  • Service Discovery:动态发现 待监控的 target,从而完成监控配置的重要组件.   Promethus 每隔几秒就会去各个 target 采集一次 metric,因此需要手工制定监测节点,当节点增多,更改配置文件就会很麻烦,这时候就需要通过服务发现,例如 service discovery,sd 机制去解决.

下文部署组件的工作方式

  • Promethus:Prometheus 并不直接监控特定的目标,而是依赖于 Exporter 来提供监控数据。 Exporter 可以是独立运行的程序,也可以是内置在监控目标中的服务,只要能够向 Prometheus 提供标准格式的监控样本数据即可。
  • Node_Exporter:通过 HTTP 接口(通常是/metrics)暴露收集到的监控数据,Prometheus 服务器定期从这个接口拉取数据。
  • Grafana:
    • 用户首先需要在 Grafana 中添加 Prometheus 作为数据源,并配置相应的查询语句来获取所需的监控数据。
    • 然后,用户可以在 Grafana 中创建仪表盘,并添加各种图表来展示这些数据。 Grafana 会根据用户设置的查询语句从 Prometheus 中查询数据,并进行处理(如计算平均值、最大值等),最后将数据可视化显示在图表中。

总的来讲:

-> Node_Exporter 负责从被监控的服务器上采集数据.

-> Prometheus 主要任务是对 Node_Exporter 采集到的数据进行收集、存储和对外提供数据查询支持.

-> Grafana 再将 Prometheus 中整理的数据进行展示.

Prometheus 生态安装(Mac)

安装 prometheus

a)安装命令:

brew install prometheus

通过 which prometheus 可以找到安装位置.

这里实际上只是一个快捷方式,真正安装目录在

  • bin目录:/opt/homebrew/Cellar/prometheus/2.53.0/bin
  • 配置文件:/opt/homebrew/etc/prometheus.yml

b)启动 prometheus

进入到 /opt/homebrew/Cellar/prometheus/2.53.0/bin 目录下,输入如下命令后台启动:

nohup ./prometheus --config.file=/opt/homebrew/etc/prometheus.yml &

通过 cat nohup 类似如下说明启动成功:

c)进入界面

在浏览器中输入: localhost:9090

如下界面

安装 grafana

a)安装命令

brew install grafana

b)安装目录

bin 目录:/opt/homebrew/Cellar/grafana/11.1.0/bin

c)启动并配置

输入命令生成对应的配置文件

grafana-server --config=/opt/homebrew/etc/grafana/grafana.ini --homepath /opt/homebrew/share/grafana --packaging=brew cfg:default.paths.logs=/opt/homebrew/var/log/grafana cfg:default.paths.data=/opt/homebrew/var/lib/grafana cfg:default.paths.plugins=/opt/homebrew/var/lib/grafana/plugins

输入地址:localhost:3000

页面如下:

下图是登陆后的页面,默认用户名和密码都是 admin,第一次登陆后必须更改密码.

安装 node_exporter

a)第一种安装方式

https://prometheus.io/download/icon-default.png?t=N7T8https://prometheus.io/download/

b)第二种安装方式:

使用 mac 也可以通过 brew 安装,如下

brew install node_exporter

c)启动:

brew services start node_exporter

或者直接

node_exporter

c)访问 localhost:9100 

显示如下内容

d)配置 prometheus.yml 

vim /opt/homebrew/etc/prometheus.yml
scrape_configs:- job_name: "prometheus"static_configs:- targets: ["localhost:9090"]- job_name: "node_exporter"static_configs:- targets: ["localhost:9100"]

e)重载配置

查看 prometheus 端口号 ps aux | grep prometheus

kill 删除 prometheus 进程,然后重启.

prometheus --config.file=/opt/homebrew/etc/prometheus.yml

f)浏览器中查看:

Prometheus 生态安装(Docker)

安装 prometheus

a)命令如下

docker pull prom/prometheus

b)创建挂载目录及配置文件

mkdir -p ~/env/prometheus

在 ~/env/prometheus 目录下创建配置文件 prometheus.yml

global:scrape_interval:    15s # 指定了 Prometheus 从每个被监控的目标 (target) 拉取数据的频率。evaluation_interval: 15s # 指定了 Prometheus 评估其定义的规则 (rules) 的频率。这些规则包括记录规则 (recording rules) 和警报规则 (alerting rules)。scrape_configs:- job_name: prometheusstatic_configs:- targets: ['env-base:9090']- job_name: grafanastatic_configs:- targets: ['env-base:3000']- job_name: node_exporterstatic_configs:- targets: ['env-base:9100']

c)运行镜像

docker run -d \
--name=prometheus \
--restart=always \
-p 9090:9090 \
-v ~/env/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \
prom/prometheus

 d)浏览器中输入 enb-base:9000 ,如下说明启动成功:

 安装 Grafana

a)命令如下

使用 docker run 命令之前,还需要给  ~/env/grafana 文件赋予 写操作 的权利,否则会启动失败

chmod a+w ~/env/grafana
docker run -d \
--name=grafana \
--restart=always \
-p 3000:3000 \
-v ~/env/grafana:/var/lib/grafana \
grafana/grafana

b)浏览器中输入 env-base:3000 ,如下界面:

第一次登录账号和密码都是 admin.

并且第一次登录成功后会强制你进行修改密码(当然你也可以继续修改为 admin),如下:

成功登录如下:

c)由于之前在 prometheus.yml 配置文件中也配置了 grafana 的地址,因此,这里可以打开 prometheus ,点击导航栏中 status 下的 targets ,就可以看到被监控的状态

Ps:prometheus 会每隔一段时间就会自动拉去你 prometheus.yml 中配置的 scrape_configs 路由,默认会去  /metrics 拉去对应的配置

安装 node_exporter

a)拉取镜像

docker pull prom/node-exporter

 b)运行

node_exporter 挂载的都是系统文件.

docker run -d -p 9100:9100 \
--name=node_exporter \
--restart=always \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
--net="host" \
prom/node-exporter

c)浏览器中输入 env-base:9100 ,如下表示访问成功

d

d)由于之前在 prometheus.yml 配置文件中也配置了 node_exporter 的地址,因此,这里可以打开 prometheus ,点击导航栏中 status 下的 targets ,就可以看到被监控的状态

Ps:prometheus 会每隔一段时间就会自动拉去你 prometheus.yml 中配置的 scrape_configs 路由,默认会去  /metrics 拉去对应的配置

Grafana 实现可视化

导入 Prometheus 数据源

引入仪表盘

Grafana dashboards | Grafana LabsBrowse a library of official and community-built dashboards.icon-default.png?t=N7T8https://grafana.com/grafana/dashboards/在上述地址中找到一个喜欢的仪表盘,然后复制 ID

Ps:上述仪表盘能采集到 Prometheus 数据的前提是,Promethus 的 prometheus.yml 配置了 node_exporter 采集数据的 url.

相关文章:

Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用

目录 开始 Prometheus 介绍 基本原理 组件介绍 下文部署组件的工作方式 Prometheus 生态安装(Mac) 安装 prometheus 安装 grafana 安装 node_exporter Prometheus 生态安装(Docker) 安装 prometheus 安装 Grafana 安装…...

Spring源码注解篇三:深入理解@Component注解

Component及其派生注解的源码 Spring框架作为Java开发中不可或缺的一部分,其依赖注入机制的核心是通过注解来实现的。本文将深入探讨Spring中Component及其派生注解的源码实现,分析Spring如何通过类路径扫描(Classpath Scanning)和…...

SpringBoot中常用的注解及其用法

1. 常用类注解 RestController和Controller是Spring中用于定义控制器的两个类注解. 1.1 RestController RestController是一个组合类注解,是Controller和ResponseBody两个注解的组合,在使 用 RestController 注解标记的类中,每个方法的返回值都会以 JSON 或 XML…...

【大语言模型】私有化搭建-企业知识库-知识问答系统

下面是我关于大语言模型学习的一点记录 目录 人工智能学习路线 MaxKB 系统(基于大语言模型的知识问答系统) 部署开源大语言模型LLM 1.CPU模式(没有好的GPU,算力和效果较差) 2.GPU模式(需要有NVIDIA显卡支持) Ollama网络配置 Ollama前…...

CSS常用的样式

字体和文本样式 font-family: 定义文本字体。 font-size: 设置字体大小。 color: 设置文本颜色。 text-align: 水平对齐文本(左对齐、右对齐、居中、两端对齐)。 line-height: 设置行间距。 text-decoration: 控制文本装饰线(如下划线、…...

结合实体类型信息(2)——基于本体的知识图谱补全深度学习方法

1 引言 1.1 问题 目前KGC和KGE提案的两个主要缺点是:(1)它们没有利用本体信息;(二)对训练时未见的事实和新鲜事物不能预测的。 1.2 解决方案 一种新的知识图嵌入初始化方法。 1.3 结合的信息 知识库中的实体向量表示+编码后的本体信息——>增强 KGC 2基…...

如何在电脑上演示手机上APP,远程排查移动端app问题

0序: 对接客户,给领导演示移动端产品,或者远程帮用户排查移动端产品的问题。都需要让别人能够看到自己在操作手机。 会议室可以使用投屏,但需要切换电脑和手机。 排查问题经常都是截图、或者手机上录制视频,十分繁琐…...

SQL Server 创建用户并授权

创建用户前需要有一个数据库,创建数据库命令如下: CREATE DATABASE [数据库名称]; CREATE DATABASE database1; 一、创建登录用户 方式1:SQL命令 命令格式:CREATE LOGIN [用户名] WITH PASSWORD 密码; 例如,创建…...

网关设备BL122实现Modbus RTU/TCP转Profinet协议

Modbus与Profinet是两种广泛应用于工业自动化领域的通信协议:Modbus因其简单性和兼容性,在许多工业设备中得到广泛应用;而Profinet提供了高速、高精度的通信能力,适合于复杂控制系统和实时应用,但两者之间的差异导致了…...

采购管理软件:改善初创企业的采购流程

说到初创企业,人们往往会联想到一个宽松的工作环境,缺乏严格的流程规范,以及公司收入的迅猛增长。这种快速增长可能会被认为会导致工作流程的无序和缺乏结构,使得员工在决策上具有较大的自由度,例如在采购方面。 在这…...

Python 是一种用途广泛的编程语言,应用于各个领域

1. 网络和互联网开发: Python 拥有丰富的框架和库,使其成为 Web 开发的理想选择。 框架: Django 和 Pyramid 用于构建复杂的 Web 应用。Flask 和 Bottle 则适合轻量级应用和 API。 库: Python 标准库支持处理 HTML、XML、JSON 和电子邮件。此外,还有强大…...

【VUE】9、VUE项目中使用VUEX完成状态管理

Vuex 是一个专为 Vue.js 应用程序设计的状态管理模式,它帮助开发者更有效地管理组件间共享的状态。在 Vue 项目中使用 Vuex,可以解决复杂应用中状态管理的困扰,确保状态变更的可追踪性和一致性。 1、Vuex 核心概念 State(状态&a…...

【eNSP模拟实验】单臂路由实现VLAN间通信

实验需求 如下图所示,辅导员办公室需要访问处在不同vlan的学生管理服务器的文件,那么如何实现两台终端相互通信呢?我们可以使用单臂路由的方式来实现。 单臂路由(router-on-a-stick)是指在路由器的一个接口上通过配置…...

哪些点权衡素材优秀与否

投放信息流素材的过程当中,我们究竟看哪几点来权衡这个素材是优秀的还是不优秀的?我们主要是以三个维度来看。 第一个就是 3 秒和 5 秒的完播率。很多优秀的素材它可能在前三秒和前五秒很平淡的一个过程,但是因为现在是一个非常快节奏的过程&…...

服务器数据恢复—2块硬盘离线且热备盘未完全激活的raid5数据恢复案例

服务器存储数据恢复环境: 北京某企业一台EMC FCAX-4存储上搭建一组由12块成员盘的raid5磁盘阵列,其中包括2块热备盘。 服务器存储故障: raid5阵列中两块硬盘离线,热备盘只有一块成功激活,raid瘫痪,上层LUN…...

Excel 学习手册 - 精进版(包括各类复杂函数及其嵌套使用)

作为程序员从未想过要去精进一下 Excel 办公软件的使用方法,以前用到某功能都是直接百度,最近这两天跟着哔哩哔哩上的戴戴戴师兄把 Excel 由里到外学了一遍,收获良多。程序员要想掌握这些内容可以说是手拿把掐,对后续 Excel 的运用…...

【CUDA】thrust进行前缀和的操作

接上篇文章,可以发现使用CUDA提供的API进行前缀和扫描时,第一次运行的时间不如共享内存访问,猜测是使用到了全局内存。 首先看调用逻辑: thrust::inclusive_scan(thrust::device, d_x, d_x N, d_x);第一个参数指定了设备&#x…...

Qt-QPainter的使用总结

一、QPainter介绍 QPainter是Qt框架中的一个类,主要用于在各种设备上进行2D图形绘制,如窗口、位图、打印设备等。它提供了一系列绘图函数,可以实现绘制点、线、曲线、形状、文本、图像以及复杂的绘画操作。 QPainter 与 QPaintDevice 和 QPaintEngine 类一起构成了Qt绘制系…...

轻松搞定GIS场景编辑,这款免费工具你一定要试试

如果你正苦恼于如何搞定GIS场景编辑,不妨来试试这款免费可视化工具——山海鲸可视化。经过本人测试,这款软件在GIS场景编辑上完全可以做到“零代码”操作,即使没有任何编程技能也可以在三维GIS世界中如鱼得水。现在,让我们一起来看…...

【笔记】一起齿轮箱的故障和相应的数学模拟实验

1.齿轮箱故障一例 出处:设备的故障识别 GearBox的频谱图,原作者不知道是从哪里拷贝来的,待会儿确认一下。 齿轮啮合频率GMF等于齿数乘以齿轮转速频率: ★齿轮啮合频率两边有边频,间距为1X(这是由冲击响应…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

微信小程序之bind和catch

这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...

pycharm 设置环境出错

pycharm 设置环境出错 pycharm 新建项目&#xff0c;设置虚拟环境&#xff0c;出错 pycharm 出错 Cannot open Local Failed to start [powershell.exe, -NoExit, -ExecutionPolicy, Bypass, -File, C:\Program Files\JetBrains\PyCharm 2024.1.3\plugins\terminal\shell-int…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天&#xff0c;深度学习与大模型技术已成为推动行业变革的核心驱动力&#xff0c;而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心&#xff0c;系统性地呈现了两部深度技术著作的精华&#xff1a;…...