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

news2024/9/23 13:29:37

目录

开始

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
  evaluation_interval: 15s
 
scrape_configs:
 
  - job_name: prometheus
    static_configs:
      - targets: ['env-base:9090']
 
  - job_name: grafana
    static_configs:
      - targets: ['env-base:3000']

  - job_name: node_exporter
    static_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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1924827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

excel 百分位函数 学习

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、函数说明PERCENTILE 函数PERCENTILE.inc 函数PERCENTILE.exc 函数QUARTILE.EXC 函数 二、使用步骤总结 前言 excel 百分位函数 Excel提供了几个函数用于…

FFmpeg开发环境搭建

FFmpeg是音视频开发必备的库,也是唯一的库。本文主要讲解在ubuntu22和macOS14环境下的编译安装。 为什么要自己编译呢?其中一个很重要的原因就是ffmpeg在编译时可以加入很多插件,这种特定的库网络上可能找不到编译好的版本,另外如…

快速使用BRTR公式出具的大模型Prompt提示语

Role:文章模仿大师 Background: 你是一位文章模仿大师,擅长分析文章风格并进行模仿创作。老板常让你学习他人文章后进行模仿创作。 Attention: 请专注在文章模仿任务上,提供高质量的输出。 Profile: Author: 一博Version: 1.0Language: 中文Descri…

元器件基础学习笔记——磁珠

一、磁珠的作用及构造 1.1 磁珠的作用 磁珠是一种用于抑制高频噪声的被动电子组件,通常由铁氧体材料制成,这种材料具有高电阻率和高磁导率,使其能够在高频下有效地将干扰信号以热能的形式消耗掉。在电路设计中,磁珠被广泛用于信号…

【计算机毕业设计】003基于weixin小程序教学辅助

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

【RabbitMQ】一文详解消息可靠性

目录: 1.前言 2.生产者 3.数据持久化 4.消费者 5.死信队列 1.前言 RabbitMQ 是一款高性能、高可靠性的消息中间件,广泛应用于分布式系统中。它允许系统中的各个模块进行异步通信,提供了高度的灵活性和可伸缩性。然而,这种通…

JavaScript进阶(三)---声明函数、调用函数、匿名函数、箭头函数、构造函数,自执行函数

目录 1. 声明函数: 2. 调用函数 3. 匿名函数 4. 箭头函数 箭头函数this使用案例: 5. 构造函数 构造函数的特点: 构造函数与普通函数的区别: 注意事项: 6.自执行函数 JavaScript是一种广泛使用的编程语言&…

15 - matlab m_map地学绘图工具基础函数 - 一些数据转换函数(二)

15 - matlab m_map地学绘图工具基础函数 - 一些数据转换函数(二) 0. 引言1. 关于m_geodesic2. 关于mygrid_sand23. 结语 0. 引言 通过前面篇节已经将m_map绘图工具中大多绘图有关的函数进行过介绍,已经能够满足基本的绘图需求,本节…

Linux vim文本编辑器

Vim(Vi IMproved)是一个高度可配置的文本编辑器,它是Vi编辑器的增强版本,广泛用于程序开发和系统管理。Vim不仅保留了Vi的所有功能,还增加了许多新特性,使其更加强大和灵活。 Vim操作模式 普通模式&#xf…

下载安装nodejs npm jarn笔记

下载安装nodejs npm jarn笔记 下载 Node.js安装Node.js修改node全局路径安装yarn 下载 Node.js 下载Node.js 安装Node.js 双击下载的下来的.msi文件运行并安装一直点next。安装路径可以是默认也可自定义。安装完成后Node.js和npm就安装完成了 命令行输入: nod…

企业网络实验(vmware虚拟机充当DHCP服务器)所有IP全部保留,只为已知mac分配固定IP

文章目录 需求实验修改dhcp虚拟机配置文件测试PC获取IP查看user-bind 需求 (vmware虚拟机充当DHCP服务器)所有IP全部保留,只为已知mac分配固定IP 实验 前期配置: https://blog.csdn.net/xzzteach/article/details/140406092 后续配置均在以上配置的前…

【学术会议征稿】第三届智能电网与能源系统国际学术会议

第三届智能电网与能源系统国际学术会议 2024 3rd International Conference on Smart Grid and Energy Systems 第三届智能电网与能源系统国际学术会议(SGES 2024)将于2024年10月25日-27日在郑州召开。 智能电网可以优化能源布局,让现有能源…

推荐一款uniapp拖动验证码插件

插件地址:易盾验证码 - DCloud 插件市场 具体使用方式访问插件地址自行获取

【教程】Vue2中使用svg矢量图

1.npm导包 npm i svg-sprite-loader --save2.创建目录放入svg文件,创建SvgIcon.js 3.SvgIcon.js const req require.context(./svg, false, /\.svg$/) const requireAll requireContext > requireContext.keys().map(requireContext) requireAll(req)4.vue.c…

【Js】导出 HTML 为 Word 文档

在 Web 开发中,有时我们希望用户能够将网页上的 HTML 内容保存为 Word 文档,以便更方便地分享和打印。 html样式 word文档 工具准备 1、 html-docx-js - npm html-docx-js是一个 JavaScript 库,用于将 HTML 内容转换为 Word 文档的格式。它…

MySQL-基础点

目录 MySQL概念 数据库三大范式是什么? blob 和 text 有什么区别? DATETIME 和 TIMESTAMP 的异同? MySQL 中 in 和 exists 的区别? MySQL 里记录货币用什么字段类型比较好? MySQL 怎么存储 emoji? 用过哪些 M…

.NET MAUI开源架构_2.什么是 .NET MAUI?

1.什么是.NET MAUI? .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML 创建本机移动和桌面应用。使用 .NET MAUI,可从单个共享代码库开发可在 Android、iOS、macOS 和 Windows 上运行的应用。 .NET MAUI 是一款…

Flower花所比特币交易及交易费用科普

在加密货币交易中,选择一个可靠的平台至关重要。Flower花所通过提供比特币交易服务脱颖而出。本文将介绍在Flower花所进行比特币交易的基础知识及其交易费用。 什么是Flower花所? Flower花所是一家加密货币交易平台,为新手和资深交易者提供…

Python + OpenCV 简单车辆统计

目录 1 源码 2 运行结果 Python OpenCV 简单车辆统计 IDE : PyChram 1 源码 函数 car_count() 简单车辆统计 # 这是一个示例 Python 脚本。# 按 ShiftF10 执行或将其替换为您的代码。 # 按 双击 Shift 在所有地方搜索类、文件、工具窗口、操作和设置。 import cv2 impor…

Mojo语言的运用

1.Mojo语言概述 1.1什么是Mojo语言? Mojo语言是一种现代的动态编程语言,主要用于Web开发。它结合了多种语言的优点,如JavaScript、Perl和Lua,旨在为开发者提供: 简洁的语法:易于学习和使用,适…