监控 Prometheus源码安装实战和动态更新 Centos7

安装go环境

下载go安装包

#创建文件夹
mkdir /usr/local/software
#进入文件夹
cd /usr/local/software
#下载安装包
wget https://dl.google.com/go/go1.17.6.linux-amd64.tar.gz

配置go环境变量

#解压
tar -zxvf go1.17.6.linux-amd64.tar.gz#配置环境变量 
echo "export PATH=$PATH:/usr/local/software/go/bin" >> /etc/profile #刷新配置
source /etc/profile#测试 go是否安装成功
go version

在这里插入图片描述

安装Prometheus

下载源代码

注意:下载有点慢,可以通过其它方式下载后,上传到路径/usr/local/software

wget https://github.com/prometheus/prometheus/releases/download/v2.45.6/prometheus-2.45.6.linux-amd64.tar.gz

解压并安装Prometheus

#解压
tar -zxvf prometheus-2.45.6.linux-amd64.tar.gz#重名名
mv prometheus-2.45.6.linux-amd64 prometheus#进入目录
cd ./prometheus/#启动
./prometheus --config.file=./prometheus.yml

查看是否启动成功

注意:命令(./prometheus --config.file=./prometheus.yml)非守护进程方式启动,验证时原窗口不要关闭,新开一个窗口连接到服务器
在这里插入图片描述

#查看是否启动成功,默认端口9090
lsof -i:9090

在这里插入图片描述

访问 prometheus

注意:安全组需要开放端口

  #指标数据http://x.x.x.x:9090/metrics#图界面http://x.x.x.x:9090/

在这里插入图片描述
在这里插入图片描述

使用技巧

  • prometheus里面经常需要修改配置,可以利用动态更新
  • 启动时在参数中加入--web.enable-lifecycle (该参数默认关闭,生产环境不建议开启)
#启动, &表示需要守护进程方式运行,不然退出终端则进程消失
./prometheus --config.file=./prometheus.yml --web.enable-lifecycle &#动态更新配置
curl -X POST http://localhost:9090/-/reload

拓展

  • Prometheus的目录结构
    • console_libraries:用于存储用于在Prometheus控制台上显示的JavaScript库。
    • consoles:用于存储用于在Prometheus控制台上显示的控制台文件,其中包括查询和图形定义。
    • data:用于存储Prometheus的磁盘持久化数据。
    • LICENSE:Prometheus的许可证文件。
    • NOTICE:版权声明文件。
    • prometheus:存储Prometheus二进制文件及其相关文件的目录。
    • prometheus.yml:Prometheus的配置文件。
    • promtool:Prometheus的命令行工具,用于检查配置文件是否正确以及生成表达式的值。

Prometheus操作面板和常见配置讲解

操作面板介绍

在这里插入图片描述

配置文件介绍

#全局配置,默认,可以被覆盖
global:scrape_interval: 15s  #全局的抓取间隔scrape_timeout: 10s  #抓取超时时间evaluation_interval: 15s  #评估间隔#告警配置
alerting:alertmanagers: #告警管理器- follow_redirects: true #是否启用重定向enable_http2: true #是否启用HTTP2scheme: httptimeout: 10sapi_version: v2 #指定Alertmanager的API版本,此处为v2static_configs: #告诉Prometheus哪些目标是静态的(即不会更改),如果有多个目标,则可以在targets中指定多个地址。- targets: []#抓取配置
scrape_configs:
- job_name: prometheus #任务名称honor_timestamps: true #指标的时间戳应该由服务器提供,而不是客户端在发送指标时提供的时间戳scrape_interval: 15s #抓取任务的时间间隔,即每15秒抓取一次。scrape_timeout: 10s  #抓取任务的超时时间,单位为秒,即每个目标最多等待10秒钟metrics_path: /metrics  #抓取指标的路径scheme: http #指定抓取时使用的协议,默认为httpfollow_redirects: true  #是否启用重定向。在此处启用enable_http2: true  #是否启用HTTP2static_configs:- targets:- 120.24.7.58:9090 #目标配置,告诉Prometheus哪些目标需要抓取,如果有多个目标,则可以在targets中指定多个地址#此处抓取了一个名为prometheus的任务,每隔15秒抓取一次localhost:9090上的/metrics路径,超时时间为10秒

Prometheus组件Node-Exporter配置实战

Exporter介绍

  • 向Prometheus提供监控样本数据的程序都可以被称为一个Exporter
  • 是一种用于将不同数据源的指标提供给Prometheus进行收集和监控的工具。
  • 运行在应用程序、计算机、网络设备或者其他系统上的代码,它可以将系统的指标信息以一种标准格式公开
  • 将指标数据公开为HTTP端点或者指定的格式(如Redis、JMX等),Prometheus然后可以通过轮询或指定的抓取器
  • 总结
    • Exporter是Prometheus的指标数据收集组件,负责从目标Jobs收集数据
    • 并把收集到的数据转换为Prometheus支持的时序数据格式
    • 只负责收集,并不向Server端发送数据,而是等待Prometheus Server 主动抓取
  • Prometheus社区以及其他团队开发了大量的Exporter,覆盖了许多不同类型的系统和服务
    • Node Exporter、MySQL Exporter、Redis Exporter、MongoDB Exporter、Nginx Exporter…
  • 使用方式
    • 在主机上安装了一个 Exporter程序,该程序对外暴露了一个用于获取当前监控样本数据的HTTP访问地址
    • Prometheus通过轮询的方式定时从这些Target中获取监控数据样本,并且存储在数据库当中
  • 所有的Exporter程序都需要按照Prometheus的规范,返回监控的样本数据
    • 比如接下去的Node Exporter为例,当访问/metrics地址时会返回内容和本身Prometheus协议保持一致即可
    • 主要由三个部分组成,Prometheus会对Exporter响应的内容逐行解析
      • 样本的一般注释信息(HELP)
      • 样本的类型注释信息(TYPE)
      • 样本

案例实战 node_exporter

node_exporter 用于采集类UNIX内核的硬件以及系统指标,包括CPU、内存和磁盘

下载exporter

# 下载
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz# 下载完成后 解压
tar -zxvf node_exporter-1.7.0.linux-amd64.tar.gz# 重命名
mv node_exporter-1.7.0.linux-amd64 node_exporter# 进入目录
cd node_exporter/# 启动
nohup ./node_exporter &#确认端口
lsof -i:9100

通过浏览器访问 http://IP:9100/metrics可以查看到监控信息

在这里插入图片描述

Prometheus服务器中添加被监控机器的配置

# target的也可以写ip
vim  prometheus.yml
- job_name: 'agent-1'static_configs:- targets: ['x.x.x.x:9100']
  • 动态更新配置
curl -X POST http://localhost:9090/-/reload

在这里插入图片描述

在这里插入图片描述

  • 注意
    • 需要达到举一反三的思路,掌握常规exporter的配置和使用
    • 社区支持的exporter 很多,但使用方式都是一样的
    • 步骤
      • 对应的机器安装exporter
      • 启动exporter 并监听对应的程序
      • 访问对应的exporter的metric路径,看是否返回数据
      • Prometheus配置新的job
      • 访问Prometheus查看target和configuration是否有数据

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GD32】从零开始学兆易创新32位微处理器——RTC实时时钟+日历例程

1 简介 RTC实时时钟顾名思义作用和墙上挂的时钟差不多,都是用于记录时间和日历,同时也有闹钟的功能。从硬件实现上来说,其实它就是一个特殊的计时器,它内部有一个32位的寄存器用于计时。RTC在低功耗应用中可以说相当重要&#xf…

【调试笔记-20240619-Windows-Typescripts中类型不匹配的解决方法】

调试笔记-系列文章目录 调试笔记-20240619-Windows-Typescripts中类型不匹配的解决方法 文章目录 调试笔记-系列文章目录调试笔记-20240619-Windows-Typescripts中类型不匹配的解决方法 前言一、调试环境操作系统:Windows 10 专业版调试环境调试目标 二、调试步骤搜…

Linux 五种IO模型

注:还有一种信号驱动IO,使用较少暂不讨论; 一,区分阻塞、非阻塞和同步、异步 看了很多文章对这两组概念解释和对比,说的太复杂了,其实没必要,两句话就能说清楚。 首先,对于读数据rec…

Qt制作程序启动界面类QSplashScreen实例测试详解

目录 一、QSplashScreen的概述 二、QSplashScreen静态图片加载 1、主程序实现 2、mainwindow.h实现 3、mainwindows.cpp实现 三、QSplashScreen动态图片加载 1、主程序实现 2、mainwindow.h实现 3、mainwindows.cpp实现 一、QSplashScreen的概述 QSplashScreen&#x…

C++并发之协程实例(三)(co_await)

目录 1 协程2 实例3 运行 1 协程 协程(Coroutines)是一个可以挂起执行以便稍后恢复的函数。协程是无堆栈的:它们通过返回到调用方来暂停执行,并且恢复执行所需的数据与堆栈分开存储。这允许异步执行的顺序代码(例如,在没有显式回调…

指纹浏览器与虚拟机的区别及在跨境电商中的应用

在如今数字化世界中,隐私和安全变得愈发重要。许多人在网络上进行敏感操作,如网上购物、在线银行、社交媒体管理等。为了保护自己的隐私,人们常常会寻求一些额外的工具,比如指纹浏览器和虚拟机。这两种工具在保护个人隐私方面都有…

sqoop的安装配置

1. 上传并解压安装包 tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ../server/ 重命名:mv sqoop-1.4.7.bin__hadoop-2.6.0 sqoop 2. 配置环境变量 sudo vim /etc/profile # 配置sqoop的环境变量 export SQOOP_HOME/export/server/sqoop export PATH$PATH…

Linux htop命令使用

文章目录 简介界面介绍第一行第二行第三行第四行 如何使用 简介 htop 是一个类似于 top 的命令,但具有更丰富的功能和更友好的界面。它可以实时显示系统中各个进程的资源占用情况,如 CPU 使用率、内存使用率等。以下是对 htop 命令的完全解析&#xff1…

嵌入式实验---实验五 串口数据接收实验

一、实验目的 1、掌握STM32F103串口数据接收程序设计流程; 2、熟悉STM32固件库的基本使用。 二、实验原理 1、STM32F103R6能通过查询中断方式接收数据,每接收到一个字节,立即向对方发送一个相同内容的字节,并把该字节的十六进…

Python: HexBinDecOct

因为: f0b1001110# 十进制 int()a0*2**01*2**11*2**21*2**30*2**40*2**51*2**6print(a)# 八进制 oct()print(78/8,78%8)# 110 001 001 8 116print(1*2**00*2**10*2**2,1*2**00*2**10*2**2,0*2**01*2**11*2**2)#十六进制 hex()#0 100 1110 16 4Eprint(sixteenFoo(0*…

如何在Qt Designer中管理QSplitter

问题描述 当按下按钮时,我希望弹出一个对话框,用户可以在其中选择内容并最终按下 ‘Ok’ 按钮。我想在这个对话框中放置一个 QSplitter,左侧面板将显示树状结构,右侧将显示其他内容。如何正确实现这一点? 从 Qt 的示…

oracle 主从库中,从库APPLIED为YES ,但是主库任然为NO

主库 从库 从库已经APPLIED但是主库为APPLIED, 主数据库和备用数据库之间的ARCH-RFS心跳Ping负责更新主数据库上v$archived_log的APPLICED列。 在主数据库上有一个指定的心跳ARCn进程来执行此Ping。如果此进程开始挂起,它将不再与远程RFS进程通信&#…

git拉取gitee项目到本地

git安装等不做赘述。 根据需要选择不同操作 1.只是单纯拉取个项目,没有后续的追踪等操作 不需要使用git init初始化本地文件夹 新建一个文件夹用于存储项目,右键选择 git bash here 会出现命令行窗口 如果像我一样,只是拉取个项目作业&…

Python爬虫技术:动态JavaScript加载音频的解析

在当今的互联网世界中,JavaScript已成为构建丰富交互体验不可或缺的技术。然而,对于网络爬虫开发者来说,JavaScript动态生成的内容却带来了不小的挑战。音频内容的动态加载尤其如此,因为它们往往涉及到复杂的用户交互和异步数据加…

xxe漏洞学习

一、什么是xxe漏洞 XXE就是XML外部实体注入,当允许引用外部实体时, XML数据在传输中有可能会被不法分子被修改,如果服务器执行被恶意插入的代码,就可以实现攻击的目的攻击者可以通过构造恶意内容,就可能导致任意文件读…

kafka(四)消息类型

一、同步消息 1、生产者 同步发送的意思就是,一条消息发送之后,会阻塞当前线程,直至返回 ack。 由于 send 方法返回的是一个 Future 对象,根据 Futrue 对象的特点,我们也可以实现同 步发送的效果,只需在调…

python---OpenCv(二),背景分离方法较有意思

目录 边界矩形 旋转矩形(最小外接矩形): 计算轮廓 找4个点的坐标 把浮点型转为Int 画轮廓 边界矩形--(最大外接矩形) 转灰度 找轮廓 找顶点 画矩形 显示 背景分离方法(这个很好玩,可以识别在动的物体) 边…

Redis源码学习:quicklist的设计与实现

为什么需要quicklist 假设你已经知道了ziplist的缺陷: 虽然节省空间,但是申请内存必须是连续的,如果内存占用比较多,申请效率低要存储大量数据,超过了ziplist的最佳上限后,性能有影响 借鉴分片思想&…

栅格数据重心迁移变化分析

目前网络上大多是针对矢量重心迁移进行计算,或把栅格转矢量在进行计算,可以不用怎么麻烦,可以直接利用栅格进行得出多期数据的重心,然后进行变化分析等方面的分析。 矢量数据可以通过下面方式进行重心计算: 使用ArcGIS…

1.1 数据采集总览

正所谓巧妇难为无米之炊,数据采集是数据处理的第一步。 什么是数据采集 数据采集,也称为数据收集,是将原始数据从各种来源获取并存储起来的过程。这个过程是数据分析和数据仓库建设的第一步,涉及到从不同的数据源中提取数据&…