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
  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.mfbz.cn/a/797043.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql-联合查询

一.联合查询的概念 .对于unio查询,就是把多次查询的结果合并起来,形成一个新的查询果集。 SELECT 字段列表 FROM 表A... UNION[ALL] SELECT 字段列表 FROM 表B..., 二.将薪资低于5000的员工,和年龄大于50岁的员工全部查询出来 select * from emp where salary&…

【数智化CIO展】沃太能源CIO陈丽:AI 浪潮下的中国企业数智化转型机遇与挑战...

陈丽 本文由沃太能源CIO陈丽投递并参与由数据猿联合上海大数据联盟共同推出的《2024中国数智化转型升级优秀CIO》榜单/奖项评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 在当今飞速发展的数字时代,中国企业正面临着前所未有的变革机遇和挑战。“中国企业数…

02:项目二:感应开关盖垃圾桶

感应开关盖垃圾桶 1、PWM开发SG901.1、怎样通过C51单片机输出PWM波?1.2、通过定时器输出PWM波来控制SG90 2、超声波测距模块的使用3、感应开关盖垃圾桶 需要材料: 1、SG90舵机模块 2、HC-SR04超声波模块 3、震动传感器 4、蜂鸣器 5、若干杜邦线 1、PWM开…

win10 docker-compose搭建ELK日志收集

elk的威名大家都知道,以前前司有专门的人维护,现在换了环境,实在不想上服务器看,所以就摸索下自己搭建,由于现场服务器是需要类似向日葵那样连接,我还是把日志弄回来,自己本地filebeat上传到es中…

WPF学习(2) -- 样式基础

一、代码 <Window x:Class"学习.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend/2008&…

jenkins系列-02.配置jenkins

首先&#xff1a;我们要给jenkins配备jdkmaven: 从上一节我们知道 ~/dockerV/jenkins/jenkins/data目录 就是 容器中jenkins的home目录 所以把jdkmaven 放在当前宿主机上的 ~/dockerV/jenkins/jenkins/data目录下即可 容器内&#xff1a; 开始配置jenkins: 注意是在jenkins…

护网HW面试常问——组件中间件框架漏洞(包含流量特征)

apache&iis&nginx中间件解析漏洞 参考我之前的文章&#xff1a;护网HW面试—apache&iis&nginx中间件解析漏洞篇-CSDN博客 log4j2 漏洞原理&#xff1a; 该漏洞主要是由于日志在打印时当遇到${后&#xff0c;以:号作为分割&#xff0c;将表达式内容分割成两部…

时间轮算法理解、Kafka实现

概述 TimingWheel&#xff0c;时间轮&#xff0c;简单理解就是一种用来存储若干个定时任务的环状队列&#xff08;或数组&#xff09;&#xff0c;工作原理和钟表的表盘类似。 关于环形队列&#xff0c;请参考环形队列。 时间轮由两个部分组成&#xff0c;一个环状数组&…

韦东山嵌入式linux系列-驱动设计的思想(面向对象/分层/分离)

1 面向对象 字符设备驱动程序抽象出一个 file_operations 结构体&#xff1b; 我们写的程序针对硬件部分抽象出 led_operations 结构体。 2 分层 上下分层&#xff0c;比如我们前面写的 LED 驱动程序就分为 2 层&#xff1a; ① 上层实现硬件无关的操作&#xff0c;比如注册…

WPF学习(3) -- 控件模板

一、操作过程 二、代码 <Window x:Class"学习.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expressio…

css基础(1)

CSS CCS Syntax CSS 规则由选择器和声明块组成。 CSS选择器 CSS选择器用于查找想要设置样式的HTML元素 一般选择器分为五类 Simple selectors (select elements based on name, id, class) 简单选择器&#xff08;根据名称、id、类选择元素&#xff09; //页面上的所有 …

WEB前端03-CSS3基础

CSS3基础 1.CSS基本概念 CSS是Cascading Style Sheets&#xff08;层叠样式表&#xff09;的缩写&#xff0c;它是一种对Web文档添加样式的简单机制&#xff0c;是一种表现HTML或XML等文件外观样式的计算机语言&#xff0c;是一种网页排版和布局设计的技术。 CSS的特点 纯C…

Oracle使用fetch first子句报错:ORA-00933 SQL命令未正确结束

问题背景 今天在统计终端厂商告警次数Top10的时候使用SQL查询使用到了fetch first子句&#xff0c;结果执行报错&#xff1a;ORA-00933 SQL命令未正确结束。 报错原因 Oracle数据库中&#xff0c;使用 FETCH FIRST 子句需要启用 Oracle 12c 及以上版本。如果在较低版本的 Or…

基于神经网络的分类和预测

基于神经网络的分类和预测 一、基础知识&#xff08;一&#xff09;引言&#xff08;二&#xff09;神经网络的基本概念&#xff08;1&#xff09;神经网络&#xff08;2&#xff09;神经元&#xff08;3&#xff09;常用的激活函数&#xff08;非线性映射函数&#xff09;&…

ISO 45001:提升职业健康与安全管理水平的关键

在现代企业管理中&#xff0c;员工的职业健康与安全&#xff08;OH&S&#xff09;已经成为不可忽视的重要议题。ISO 45001作为国际标准化组织&#xff08;ISO&#xff09;制定的职业健康与安全管理体系标准&#xff0c;为企业提供了科学有效的管理规范和指南。实施这一标准…

Go-知识测试-子测试

Go-知识测试-子测试 1. 介绍2. 例子3. 子测试命名规则4. 选择性执行5. 子测试并发6. testing.T.Run7. testing.T.Parallel8. 子测试适用于单元测试9. 子测试适用于性能测试10. 总结10.1 启动子测试 Run10.2 启动并发测试 Parallel 建议先看&#xff1a;https://blog.csdn.net/a…

探索“搭旅万物皆可搭”小程序——构建旅行搭伴平台的创新实践

摘要 随着旅游市场的不断发展和个性化需求的日益增长&#xff0c;旅行搭伴平台逐渐成为连接志同道合旅者的桥梁。本文旨在介绍“搭旅万物皆可搭”小程序的设计理念、核心功能及其背后的技术实现&#xff0c;探讨如何通过算法优化、安全保障、社交互动等手段&#xff0c;打造一…

手撕Vue中的RouterLink和RouterView,深入理解其底层原理(一)

RouterLink和RouterView的作用 我们可以通过RouterLink绑定好指向的路径 点击就能够实现在RouterView中将页面显示出来 我们首先使用官方的vue-router展示一下效果 App.vue <template><div><router-link to"/">Home</router-link><ro…

51单片机STC89C52RC——17.2 红外遥控数字加减、电机调速

目的/效果 1&#xff1a;按VOL-键数字减、按VOL加数字加 2&#xff1a;按键 0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4 电机调速 一&#xff0c;STC单片机模块 二&#xff0c;红外遥控 详细了解红外遥控控制原理请参考《51单片机STC89C52RC——17.1 红外线遥控…

UE4 解决创建布料报错:三角形退化

**【问题】**创建创建布料时报错&#xff1a;三角形退化 【方法】 1.要重新绑定&#xff1a;导入到ue4为静态网格体&#xff0c;勾选“移除退化”&#xff0c;再导出fbx&#xff0c;再重新绑定 2.不用重新绑定&#xff1a;使用排除法&#xff08;费时&#xff09;&#xff0c…