Promethus(普罗米修斯)安装与配置

2023-05-16

1. 普罗米修斯概述

  • Prometheus(是由go语言(golang)开发)是一套开源的监控&报警&时间序列数 据库的组合。适合监控docker容器。

  • Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立于任何公司进行维护。为了强调这一点并阐明项目的治理结构,Prometheus 于2016年加入了 Cloud Native Computing Foundation,这是继Kubernetes之后的第二个托管项目。

  • Prometheus是一个时间序列数据库。但是,它不仅仅是一个时间序列数据库。

  • 它涵盖了可以绑定的整个生态系统工具集及其功能。

  • Prometheus主要用于对基础设施的监控。包括服务器,数据库,VPS,几乎所有东西都可以通过Prometheus进行监控。Prometheus希望通过对Prometheus配置中定义的某些端点执行的HTTP调用来检索度量标准。

Prometheus 的优点

  • 非常少的外部依赖,安装使用超简单
  • 已经有非常多的系统集成 例如:docker HAProxy Nginx JMX等等
  • 服务自动化发现
  • 直接集成到代码
  • 设计思想是按照分布式、微服务架构来实现的
  • 可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端
  • 可以通过服务发现或者静态配置去获取监控的 targets。
  • 有多种可视化图形界面。
  • 易于伸缩。

Prometheus 的特性

  • 一个多维数据模型,其中包含通过度量标准名称和键/值对标识的时间序列数据
  • PromQL,一种灵活的查询语言 ,可利用此维度
  • 不依赖分布式存储;单服务器节点是自治的
  • 时间序列收集通过HTTP上的拉模型进行
  • 通过中间网关支持推送时间序列
  • 通过服务发现或静态配置发现目标
  • 多种图形和仪表板支持模式

2. 时间序列数据

1、什么是序列数据
时间序列数据(TimeSeries Data) : 按照时间顺序记录系统、设备状态变化 的数据被称为时序数据。
应用的场景很多, 如:

无人驾驶车辆运行中要记录的经度,纬度,速度,方向,旁边物体的距 离等等。每时每刻都要将数据记录下来做分析。
某一个地区的各车辆的行驶轨迹数据
传统证券行业实时交易数据
实时运维监控数据等

2.1 时间序列数据特点

性能好

关系型数据库对于大规模数据的处理性能糟糕。NOSQL可以比较好的处理 大规模数据,让依然比不上时间序列数据库。

存储成本低

高效的压缩算法,节省存储空间,有效降低IO
Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占 用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了 200多G(来自官方数据)

3. Prometheus原理架构图

下图说明了Prometheus的体系结构及其某些生态系统组件:
在这里插入图片描述

  • prometheus直接或通过中介推送网关从已检测作业中删除指标,以处理短暂的作业。它在本地存储所有报废的样本,并对这些数据运行规则,以汇总和记录现有数据中的新时间序列,或生成警报。Grafana或其他API使用者可以用来可视化收集的数据。

  • Prometheus可以很好地记录任何纯数字时间序列。它既适用于以机器为中心的监视,也适用于高度动态的面向服务的体系结构的监视。在微服务世界中,它对多维数据收集和查询的支持是一种特别的优势。

  • Prometheus的设计旨在提高可靠性,使其成为中断期间要使用的系统,以使您能够快速诊断问题。每个Prometheus服务器都是独立的,而不依赖于网络存储或其他远程服务。当基础结构的其他部分损坏时,您可以依靠它,并且无需设置广泛的基础结构即可使用它。

  • 普罗米修斯重视可靠性。即使在故障情况下,您始终可以查看有关系统的可用统计信息。如果您需要100%的准确性(例如按请求计费),则Prometheus并不是一个好的选择,因为所收集的数据可能不够详细和完整。在这种情况下,最好使用其他系统来收集和分析数据以进行计费,并使用Prometheus进行其余的监视。

4. 部署Prometheus

实验环境:

主机名IP服务
node2192.168.200.154prometheus
node1192.168.200.144node_exporter

4.1准备工作

下载最新版的服务端prometheus和客户端node_exporter

  • 服务端:https://prometheus.io/download/#prometheus
  • 客户端:https://prometheus.io/download/#node_exporter

4.2下载软件包

[root@node2 ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.31.1/prometheus-2.31.1.linux-amd64.tar.gz

4.3解压缩包

[root@node2 ~]# tar xf prometheus-2.31.1.linux-amd64.tar.gz -C /usr/local/
[root@node2 src]# cd /usr/local/
[root@node2 local]# ls
bin  games    lib    libexec                        redis  share
etc  include  lib64  prometheus-2.31.1.linux-amd64  sbin   src

[root@node2 local]# mv prometheus-2.31.1.linux-amd64/  prometheus

4.4运行Prometheus server

[root@node2 local]# cd prometheus/
[root@node2 prometheus]# ./prometheus --config.file=prometheus.yml

4.5 配置Prometheus

在Prometheus.yml中有配置文件,我们可以对其进行配置,当然第一次安装也可以不用配置;

root@node2 prometheus]# vim /usr/local/prometheus/prometheus.yml

#全局配置
global:
  scrape_interval: 15s #每隔15秒向目标抓取一次数,默认为一分钟
  evaluation_interval: 15s #每隔15秒执行一次告警规则,默认为一分钟
  # scrape_timeout: 600s  #抓取数据的超时时间,默认为10s

#告警配置
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093	 #alertmanager所部署机器的ip和端口

#定义告警规则和阈值的yml文件
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

#收集数据配置
#以下是Prometheus自身的一个配置.
scrape_configs:
  #这个配置是表示在这个配置内的时间序例,每一条都会自动添加上这个{job_name:"prometheus"}的标签.
  - job_name: "prometheus"
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:			#静态配置
      - targets: ["localhost:9090"]

其配置大致可分为四部分:

  • global:全局配置,其中scrape_interval表示抓取一次数据的间隔时间,evaluation_interval表示进行告警规则检测的间隔时间;

  • alerting:告警管理器(Alertmanager)的配置,目前还没有安装Alertmanager;

  • rule_files:告警规则有哪些;

  • scrape_configs:抓取监控信息的目标。一个job_name就是一个目标,其targets就是采集信息的IP和端口。这里默认监控了Prometheus自己,可以通过修改这里来修改Prometheus的监控端口。Prometheus的每个exporter都会是一个目标,它们可以上报不同的监控信息,比如机器状态,或者mysql性能等等,不同语言sdk也会是一个目标,它们会上报你自定义的业务监控信息。

4.6 校验配置文件

[root@node2 prometheus]# ./promtool check config ./prometheus.yml
Checking ./prometheus.yml
  SUCCESS: 0 rule files found

4.7配置service启动文件

[root@node2 prometheus]# cat > /usr/lib/systemd/system/prometheus.service <<EOF
[Unit]
Description=The Prometheus Server
After=network.target

[Service]
Restart=on-failure
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
RestartSec=15s

[Install]
WantedBy=multi-user.target

EOF

[root@node2 prometheus]# systemctl daemon-reload 
[root@node2 prometheus]# systemctl restart prometheus
[root@node2 local]# ss -antl
State  Recv-Q Send-Q Local Address:Port   Peer Address:Port Process 
LISTEN 0      128          0.0.0.0:6379        0.0.0.0:*            
LISTEN 0      128          0.0.0.0:22          0.0.0.0:*            
LISTEN 0      128             [::]:22             [::]:*            
LISTEN 0      128                *:9090              *:* 

4.8启动参数介绍

##启动
/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml &

##启动参数介绍
--config.file      	   #加载prometheus的配置文件
--web.listen-address   #监听prometheus的web地址和端口
--web.enable-lifecycle #热启动参数,可以在不中断服务的情况下重启加载配置文件
--storage.tsdb.retention   #数据持久化的时间                         
--storage.tsdb.path        #数据持久化的保存路径

4.9访问测试

输入: “ip地址”+":9090" 在浏览器中进行访问,如果出现可视化界面说明成功;
请添加图片描述

6. node_exporter部署

6.1 下载软件包

wget https://github.com/prometheus/node_exporter/releases/download/v1.3.0/node_exporter-1.3.0.linux-amd64.tar.gz

6.2 解压软件包

[root@node1 ~]# ls
anaconda-ks.cfg  node_exporter-1.3.0.linux-amd64.tar.gz

[root@node1 ~]# tar xf node_exporter-1.3.0.linux-amd64.tar.gz -C /usr/local/
[root@node1 ~]# 
[root@node1 ~]# cd /usr/local/
[root@node1 local]# ls
bin  games    lib    libexec                          sbin   src
etc  include  lib64  node_exporter-1.3.0.linux-amd64  share

[root@node1 local]# mv node_exporter-1.3.0.linux-amd64/ node_exporter
[root@node1 local]# 

6.4 启动参数介绍

注意:相关启动的参数
--web.listen-address     #node_expoetrt暴露的端口
--collector.systemd	     #从systemd中收集
--collector.systemd.unit-whitelist   ##白名单,收集目标
		".+"         		      #从systemd中循环正则匹配单元
		"(docker|sshd|nginx).service"  #白名单,收集目标,收集参数node_systemd_unit_state

6.5 配置service文件

[root@node1 local]# vi /usr/lib/systemd/system/node_exporter.service
[unit]
Description=The node_exporter Server
After=network.target

[Service]
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
RestartSec=15s
SyslogIdentifier=node_exporter

[Install]
WantedBy=multi-user.target

[root@node1 local]# systemctl daemon-reload 
[root@node1 local]# systemctl enable node_exporter 
[root@node1 local]# systemctl restart node_exporter
Created symlink /etc/systemd/system/multi-user.target.wants/node_exporter.service → /usr/lib/systemd/system/node_exporter.service.

[root@node1 local]# ss -antl
State  Recv-Q Send-Q Local Address:Port   Peer Address:Port Process 
LISTEN 0      128          0.0.0.0:22          0.0.0.0:*            
LISTEN 0      128             [::]:22             [::]:*            
LISTEN 0      128                *:9100              *:*            
[root@node1 local]# 

6.6 在Prometheus主机上修改prometheus.yml配置文件

[root@node2 prometheus]# vim /usr/local/prometheus/prometheus.yml
......

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["192.168.200.144:9100"]    //此处指定客户端ip和端口

6.7访问测试是否连接成功

使用Prometheus主机IP地址和端口号 http://192.168.200.154:9100/targets访问
请添加图片描述
请添加图片描述

请添加图片描述
请添加图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Promethus(普罗米修斯)安装与配置 的相关文章

  • 【shell】shell字符串分割|文件分割|剪切|截取

    目录 一 字符串分割 1 awk分割 xff08 按位字节 分隔符 通配符分割 xff09 print 按列和字节分割截取 split 按分割符分割截取 按通配符分割 2 利用shell 中 变量 的字符串替换成空格分割 3 设置分隔符 x
  • 【解决】Avoid mutating a prop directly since the value will be overwritten whenever the parent compon...

    完整报错信息 xff1a Vue warn Avoid mutating a prop directly since the value will be overwritten whenever the parent component r
  • MAC安装JD-GUI反编译工具

    JD GUI 是一款反编译工具 本文介绍的是 JD GUI的安装方式 xff0c very easy 首先打开官网 xff1a http java decompiler github io 无法访问的朋友可以私信我要jar包 当然你也可以去
  • 转载:配置darknet_ros实现yolo检测

    来自第三届华南农业大学人工智能协会 xff1a 会长部 麦彦恒出品 配置darknet ros实现yolo检测 M朗拿度的博客 CSDN博客
  • AUTOSAR(一)基本概述

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 目录 文章目录 一 什么是AUTOSAR xff1f 二 为什么要使用AUTOSAR xff1f 三 AUTOSAR版本 一 什
  • 台达PLC与单片机的通讯

    最近由于工作需要用PLC与单片机通讯 xff0c 以此用PLC来控制单片机 xff0c 使单片机作为一个IO扩展模块来使用 这是第一次尝试自己写代码来使两个器件通讯 xff0c 故在此做一下笔记 xff0c 顺便巩固一下在这个过程中所学到的
  • VirtualBox 创建了备份(系统快照),如何恢复备份

    打开软件 xff0c 就进入了以下界面 这里并没有什么备份操作 xff0c 然后我们点开这个位置 点击备份就会到达这个页面 点击自己想要恢复的备份就可以了 xff0c 不过得先要关机
  • 详细讲解算术/范围编码(AC)

    算术编码 xff08 Arithmetic coding xff09 是一种无损数据压缩技术 xff0c 它能够将任意离散的符号串 xff08 如字母 像素值等 xff09 压缩为一个实数区间 xff0c 并可以通过解码还原出原始数据 范围
  • 50家大厂面试万字精华总结,数据库事务深入分析,最全指南

    什么是自旋锁和互斥锁 xff1f 由于CLH锁是一种自旋锁 xff0c 那么我们先来看看自旋锁是什么 xff1f 自旋锁说白了也是一种互斥锁 xff0c 只不过没有抢到锁的线程会一直自旋等待锁的释放 xff0c 处于busy waiting
  • MySQL万字精华总结!你连基础的JVM运行时内存布局都忘了?含面试题+答案

    前言 Netty 是一款基于 Java 的网络编程框架 xff0c 能为应用程序管理复杂的网络编程 多线程处理以及并发 Netty 隐藏了样板和底层代码 xff0c 让业务逻辑保持分离 xff0c 更加易于复用 使用 Netty 可以得到一
  • 【STM32】 AMS1117(稳压)模块

    目录 一 xff1a 介绍 二 xff1a 应用 三 xff1a AMS1117 3 3芯片实物图 四 xff1a 特性 五 xff1a 典型应用 六 xff1a 引脚分配 七 xff1a 可调 固定低压差线性稳压器结构 一 xff1a 介
  • 【网络】连接服务器失败(错误原因:Connection refused)| error 111: (111) Connection refused 原因分析

    服务器拒绝原因 xff1a connect 发起TCP连接请求被拒绝是由于目标服务器上无对应的监听套接字 xff08 IP amp amp PORT xff09 xff08 没有监听 无法创建 监听别的IP 端口 xff09 有几个可能性
  • 【C++软件开发】Linux相关面试题型

    一 xff1a Linux的I O模型介绍以及同步异步阻塞非阻塞的区别 xff08 超级重要 xff09 xff08 IO过程包括两个阶段 xff1a xff08 1 xff09 内核从IO设备读写数据和 xff08 2 xff09 进程从
  • 【C++】 STL详解

    目录 一 xff1a 泛型编程 二 xff1a 什么是STL 三 xff1a STL发展 四 xff1a STL组件 五 xff1a 容器 六 xff1a 类型成员 七 xff1a 适配器 八 xff1a 迭代器 九 xff1a 算法 十
  • 12.STM32freeRTOS---递归互斥信号量

    文章目录 前言一 创建递归互斥信号量二 释放递归互斥信号量三 获取递归互斥信号量四 官方例程总结 前言 递归互斥信号量可以看成是一个特殊的互斥信号量 对于互斥信号量 xff0c 获取了互斥信号量的任务就不能再次获取这个互斥信号量 xff0c
  • toString用法

    toString是定义在java lang Object的方法 xff0c 因此所有类都可以使用toString方法 xff0c 但是 toString方法本身返回的是地址信息而对于String Date File 包装类 等都重写了toS
  • 商医通项目总结

    一 项目概述 简介 尚医通即为网上预约挂号系统 xff0c 网上预约挂号是近年开展的一项便民就医服务 xff0c 旨在缓解看病难 挂号难的就医难题 网上预约挂号全面提供的预约挂号业务从根本上解决了这一就医难题 随时随地轻松挂号 xff0c
  • docker安装以及遇到的问题

    目录 一 docker安装 二 安装中可能碰到的问题 1 WSL 2 installation is incomplete 一 docker安装 docker官网下载 xff1a Docker Desktop Docker xff0c 下载
  • STM32MP157实验(三)——按键扫描和中断

    文章目录 按键扫描设计需求基础知识硬件设计STM32CubeIDE设计MX设置代码设计 实验结果 按键中断设计需求基础知识硬件设计STM32CubeIDE设计MX设置代码设计 总结 按键扫描 设计需求 通过按键扫描的方式实现 xff0c 按
  • 一篇博客实现嵌入式入门

    文章目录 前言最小系统和C语言最小系统原理图电源电路时钟电路复位电路调试 下载电路 嵌入式C语言基础知识数据类型const用法修饰变量修饰数组修饰指针修饰函数参数 作用域与static用法extern的用法volatile的用法struct

随机推荐

  • 驱动开发(一)——(单片机程序、Linux应用程序与驱动程序分析)

    文章目录 前言157准备工作配置交叉编译链编译内核编译解压glibc 单片机程序应用程序驱动程序三者的关系 前言 学习资料 xff0c 跟的韦东山老师的视频 xff0c 大家可以上百问网下载资料 百问网 我使用的开发板是STM32MP157
  • 驱动开发(五)——驱动设计思想(面向对象/分层/分离)

    文章目录 设计思想面向对象分层分离 实验手册资源驱动程序 led drv cled operations h芯片相关chip gpio cled resource h单板相关 board MP157 led c应用测试程序Makefile
  • 【shell】遇到错误退出set -e|set -u|set -x|shell 退出时执行|捕捉信号trap

    目录 遇到错误退出 简介和使用 set e 的陷阱 1 xff0c 管道命令 2 xff0c grep匹配不到会导致退出 shell退出时执行 接收信号 trap 用途 trap介绍 列出所有信号的数值和名字 trap的注意事项 遇到错误退
  • 我的世界java版官方网站,讲的太透彻了

    简介 基于SpringCloud Hoxton SR1 43 SpringBoot 2 2 4 RELEASE 的 SaaS型微服务脚手架 xff0c 具备用户管理 资源权限管理 网关统一鉴权 Xss防跨站攻击 自动代码生成 多存储系统 分
  • 深入理解java虚拟机pdf,GitHub已标星16k

    专题5 xff1a Java序列化 1 什么是java序列化 xff0c 如何实现java序列化 xff1f 2 保存 持久化 对象及其状态到内存或者磁盘 3 序列化对象以字节数组保持 静态成员不保存 4 序列化用户远程对象传输 5 Ser
  • 成功入职阿里月薪45K,附赠课程+题库

    网站基础知识 xff08 网站架构及其演变过程 43 常见协议和标准 43 DNS的设置 43 Java中Socket的用法 43 HTTP协议 43 详解Servlet 43 Tomcat分析 xff09 俯视 Spring MVC xf
  • 快醒醒吧!springcloud分布式事务面试题

    一 什么是架构和架构本质 在软件行业 xff0c 对于什么是架构 xff0c 都有很多的争论 xff0c 每个人都有自己的理解 此君说的架构和彼君理解的架构未必是一回事 因此我们在讨论架构之前 xff0c 我们先讨论架构的概念定义 xff0
  • 基于java实现直播,太牛了!

    美团技术一面20分钟 晚7点 xff0c 因为想到下周一才面试 xff0c 我刚准备出去打个羽毛球 xff0c 北京的电话就来了 面试官各种抱歉 xff0c 说开会拖延了 1 自我介绍 说了很多遍了 xff0c 很流畅捡重点介绍完 2 问我
  • java银行面试题目及答案,顺利拿到offer

    二 常见的并发问题 1 脏读 一个事务读取了另一个事务未提交的数据 2 不可重复读 一个事务对同一数据的读取结果前后不一致 两次读取中间被其他事务修改了 3 幻读 幻读是指事务读取某个范围的数据时 xff0c 因为其他事务的操作导致前后两次
  • 白嫖党最爱!javasocket服务端向客户端发消息

    一 公务员都不要35岁以上的 xff0c 何况大公司 这让很多人感到惶恐 xff0c 现在职场上有一种现象 xff1a 很多用人单位会在招聘信息上明确标注 xff0c 年龄需在35岁以下 为什么有经验 有人脉的职场中年人会如此遭 嫌弃 呢
  • Mybatis源码解析:21道Java基础面试题及答案

    10 HashMap和HashTable的区别 答案 xff1a Hashtable和HashMap类有三个重要的不同之处 1 第一个不同主要是历史原因 Hashtable是基于陈旧的Dictionary类的 xff0c HashMap是J
  • Mybatis源码解析:Java泛型详解

    注意 xff1a 泛型的类型参数只能是类类型 xff0c 不能是基本属性类型 xff1b 不能对确切的泛型类型使用instanceof操作 如下面的操作是非法的 xff0c 编译时会出错 if ex num instanceof Gener
  • MySQL数据库优化:Java程序员秋招三面蚂蚁金服

    自我介绍 JVM如何加载一个类的过程 xff0c 双亲委派模型中有哪些方法 xff1f HashMap如何实现的 xff1f HashMap和Concurrent HashMap区别 xff0c Concurrent HashMap 线程安
  • 【shell】shell脚本模板

    参考 xff1a cShell脚本模板 运维 64 小兵的博客 CSDN博客 bin bash set e 打开异常退出功能 set x 打开Debug功能 定义变量 source etc profile 避免用contab ansible
  • ROS中自定义头文件、源文件和可执行文件调用

    编写头文件 头文件创建在功能包 include 功能包名路径下 xff0c 示例内容如下 xff1a ifndef haha define haha namespace haha ns class Person public void ru
  • STM32/51单片机进阶技一 裸机编程(多任务处理编程思想与代码风格)

    文章目录 系列文章目录前言一 裸机编程是什么 xff1f 二 使用步骤 1 main c主函数处理2 中断函数处理总结 前言 在单片机编程当中 xff0c 我们难免会用单片机处理1个 xff0c 2个简单的任务 xff0c 但是当任务数量超
  • 用JavaScript写的猜数字游戏

    先输出游戏目的 xff0c 用Math Random找到随机数 xff0c 其取值在0 1之间 xff0c 故乘100 直到输入的数字和随机数a相等时才跳出循环 否则 xff0c 判断输入值如果大于随机数 xff0c 则输出你猜的数偏大哦
  • 使用JS脚本打开多个网页的方法

    01 问题 如每天都需要刷新重复的网页或许数据 有什么解决办法吗 02 解决方案 大家可以移步是你的Sakura的 打开多个相关联的网页 js脚本打开网页方法 03 代码 span class token tag span class to
  • 安装 rotors-gazebo 时 melodic版本遇到的问题

    针对找不到qt gui的问题 Could not find a package configuration file provided by 34 qt gui 34 with any of the following names qt g
  • Promethus(普罗米修斯)安装与配置

    1 普罗米修斯概述 Prometheus 是由go语言 golang 开发 是一套开源的监控 amp 报警 amp 时间序列数 据库的组合 适合监控docker容器 Prometheus是最初在SoundCloud上构建的开源系统监视和警报