prometheus(普罗米修斯)

2023-05-16

prometheus

什么是普罗米修斯?

​ Prometheus是一个开源系统监控和警报工具包,最初是在[SoundCloud]上构建的。自2012年成立以来,许多公司和组织都采用了Prometheus,并且该项目拥有非常活跃的开发人员和用户[社区]。它现在是一个独立的开源项目,独立于任何公司维护。为了强调这一点,并澄清项目的治理结构,Prometheus于2016年加入[云原生计算基金会],成为继Kubernetes之后的第二个托管项目。

Prometheus 收集并将其指标存储为时间序列数据,即指标信息与记录它的时间戳一起存储,以及称为标签的可选键值对。

特点:

普罗米修斯的主要特点是:

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

用外行人的话来说,指标是数字度量,时间序列意味着随时间变化而记录。用户想要衡量的内容因应用程序而异。对于Web服务器,它可能是请求时间,对于数据库,它可能是活动连接数或活动查询数等。

指标在理解应用程序以某种方式工作的原因方面起着重要作用。假设您正在运行一个 Web 应用程序,并发现该应用程序运行缓慢。您将需要一些信息来了解您的应用程序发生了什么。例如,当请求数很高时,应用程序可能会变慢。如果您有请求计数指标,则可以发现原因并增加服务器数量以处理负载。

组件

Prometheus生态系统由多个组件组成,其中许多是可选的:

  • 主普罗米修斯服务器,用于抓取和存储时间序列数据
  • 用于检测应用程序代码的客户端库
  • 用于支持短期作业的推送网关
  • HAProxy,StatsD,Graphite等服务的特殊用途出口商。
  • 用于处理警报的警报管理器
  • 各种支持工具

大多数普罗米修斯组件都是用Go编写的,这使得它们很容易被构建和部署为静态二进制文件。

建筑

下图说明了普罗米修斯的架构及其一些生态系统组件:

在这里插入图片描述

Prometheus 直接从检测作业中抓取指标,或者通过中间推送网关为短期作业抓取指标。它将所有抓取的样本存储在本地,并对此数据运行规则,以聚合和记录现有数据中的新时间序列或生成警报。Grafana或其他API使用者可用于可视化收集的数据。

什么时候适合?

普罗米修斯非常适合记录任何纯数字时间序列。它既适合以机器为中心的监视,也适用于对高度动态的面向服务的体系结构的监视。在微服务世界中,它对多维数据收集和查询的支持是一个特别的优势。

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

什么时候不合适?

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

环境说明:

主机系统IP服务
masterCentos 8192.168.220.9Prometheus
node1Centos 8192.168.220.10node_exporter
visualCentos 8192.168.220.17grafana
安装 prometheus

官网: link.

下载

https://github.com/prometheus/prometheus/releases/download/v2.31.1/prometheus-2.31.1.linux-amd64.tar.gz

上传到目录

[root@node1 ~]# cd /usr/src
[root@node1 src]# ls
debug  kernels  prometheus-2.31.1.linux-amd64.tar.gz

解压并重命名

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

配置文件检查

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

[root@master prometheus]# 

配置文件

配置共分为三部分,分别是全局配置、告警配置、收集数据配置
[root@master prometheus]# vim prometheus.yml
# 全局配置
# my global config
global:
  scrape_interval: 15s # 每隔15秒向目标抓取一次数,默认为一分钟
  evaluation_interval: 15s #  每隔15秒执行一次告警规则,默认为一分钟
  # scrape_timeout: 30s  #抓取数据的超时时间,默认为10s

# 告警配置
# Alertmanager configuration
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"]    # 本机的9090端口

配置开机自启服务

[root@master 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@master prometheus]# systemctl daemon-reload
[root@master prometheus]# systemctl status prometheus
● prometheus.service - The Prometheus Server
   Loaded: loaded (/usr/lib/systemd/system/prometheus.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
   
[root@master prometheus]# systemctl enable --now prometheus
Created symlink /etc/systemd/system/multi-user.target.wants/prometheus.service → /usr/lib/systemd/system/prometheus.service.
[root@master prometheus]# 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                                  *:9090                              *:*                            

启动的参数:

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

普罗米修斯应该启动了。应该能够浏览到有关其自身的状态页面为 localhost:9090 。给它大约 30 秒的时间,从其自己的 HTTP 指标终结点收集有关自身的数据。

访问网页

在这里插入图片描述

简单查看一下,Prometheus 导出的关于自身的一个指标被称为 (Prometheus 服务器所服务的请求总数)。

在这里插入图片描述

NodeExporter

下载网址也在Prometheus官网

Node Exporter 是 Prometheus 提供的一个可以采集到主机信息的应用程序,它能采集到机器的 CPU、内存、磁盘等信息。

下载

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

解压名重命名

[root@node1 ~]# cd /usr/src
[root@node1 src]# ls
debug  kernels  node_exporter-1.3.0.linux-amd64.tar.gz
[root@node1 src]# tar xf node_exporter-1.3.0.linux-amd64.tar.gz -C /usr/local/

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

启动参数

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

service文件配置

[root@node1 local]# cat /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 status node_exporter
● node_exporter.service
   Loaded: loaded (/usr/lib/systemd/system/node_exporter.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

[root@node1 local]# systemctl enable --now  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                                  *:9100                              *:*                            
LISTEN         0               128                               [::]:22                             [::]:*

访问 Prometheus 是否正在提供有关其自身的指标 localhost:9100

在这里插入图片描述

在这里插入图片描述

修改master主机的配置文件并重启


1 # my global config
  2 global:
  3   scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  4   evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  5   # scrape_timeout is set to the global default (10s).
  6 
  7 # Alertmanager configuration
  8 alerting:
  9   alertmanagers:
 10     - static_configs:
 11         - targets:
 12           # - alertmanager:9093
 13 
 14 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
 15 rule_files:
 16   # - "first_rules.yml"
 17   # - "second_rules.yml"
 18 
 19 # A scrape configuration containing exactly one endpoint to scrape:
 20 # Here it's Prometheus itself.
 21 scrape_configs:
 22   # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
 23   - job_name: "prometheus"
 24 
 25     # metrics_path defaults to '/metrics'
 26     # scheme defaults to 'http'.
 27 
 28     static_configs: 
 29       - targets: ["192.168.220.10:9100"]  # 修改为安装node_exporter主机的IP+端口
 
 # 重启
 [root@master prometheus]# systemctl restart prometheus
 [root@master prometheus]# 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                                  *:9090                              *:*                            

访问master的9090/targets,查看到node1(192.168.220.10)任务的状态是Up,证明Node_Exporter是正常的;Prometheus 服务端会定时去拉取node_exporter的数据。
在这里插入图片描述

在这里插入图片描述
Grafana
官网: link.
grafana是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。

下载安装

wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.2.5-1.x86_64.rpm

[root@visual ~]# cd /usr/src/
[root@visual src]# ls
debug  grafana-enterprise-8.2.5-1.x86_64.rpm  kernels
[root@visual src]# yum -y install grafana-enterprise-8.2.5-1.x86_64.rpm
....

启动

[root@visual src]# cd /etc/grafana/
[root@visual grafana]# ls
grafana.ini  ldap.toml  provisioning

[root@visual grafana]# cd
[root@visual ~]# 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                             [::]:*                            
[root@visual ~]# systemctl enable --now grafana-server
[root@visual ~]# 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                                  *:3000                              *:*

访问

默认用户和密码是admin,登录后会要求修改密码
在这里插入图片描述
修改密码
在这里插入图片描述
登录成功界面

在这里插入图片描述
选择数据源为Prometheus
在这里插入图片描述

在这里插入图片描述

填写好后滚动到最后面保存
在这里插入图片描述
导入模板
Grafana模板下载: link.
在这里插入图片描述

官网下载好看的模板导入,我这里使用的模板id是8919
在这里插入图片描述
选择prometheus导入
在这里插入图片描述
在这里插入图片描述

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

prometheus(普罗米修斯) 的相关文章

随机推荐

  • 关于使用HTTP上传文件到hdfs文件系统

    String tenantName 61 System getenv 34 OPENPALETTE NAMESPACE 34 String dataIntegrationServiceName 61 34 dataintegration m
  • 详解 FTP、FTPS 与 SFTP 的原理

    FTP FTPS 与 SFTP 简介 FTP FTP 即 文件传输协议 xff08 英语 xff1a File Transfer Protocol 的缩写 xff09 是一个用于计算机网络上在客户端和服务器之间进行文件传输的应用层协议 完整
  • 用函数调用,把在一个函数的内部改变另一个函数的变量(这个变量相对于第一个函数就是一个外部变量)

    include lt stdio h gt void add int p 指针是整数 xff0c 所以其类型是int整型 这里 p外部变量num的地址 xff0c 即 p 61 num p 43 43 指针变量在单独使用时记得要加括号表示一
  • keil5 C51版本安装及MDK5合并,搭建STM32开发环境(详细教程)

    keil5安装及MDK5合并 资源说明 已将文章中涉及到的所有软件安装包及注册机2032版都放置到百度网盘 xff0c 链接 xff1a 百度云盘链接 提取码 xff1a 0109 1 C51安装 首先在keil官网里下载软件安装包 xff
  • Jmeter性能测试(22)--内存溢出原因及解决方法

    jmeter是一个java开发的开源性能测试工具 xff0c 在性能测试中可支持模拟并发压测 xff0c 但有时候当模拟并发请求较大或者脚本运行时间较长时 xff0c 压力机会出现卡顿甚至报异常 内存溢出 xff0c 这里就介绍下如何解决内
  • Ubuntu16.04的安装教程

    Ubuntu16 04的安装 这里我们会介绍Ubuntu16 04的史诗级保姆教程 开始了 xff0c 车速有点快 xff0c 系好安全带 xff0c 发车了 xff01 1 打开浏览器 xff0c 找到Ubuntu的官网 2 单击 系统桌
  • 电脑触摸板无法使用,I2C HID设备异常处理。

    本人电脑 戴尔 Vostro3400 xff0c win10系统 xff0c 触摸板突然失灵 xff0c 客服让我更新BIOS驱动 xff0c 关闭电源选项的快速启动等等 好了一阵 xff0c 再一重启又失灵 经过无限次百度 xff0c 终
  • 自我简介,对软件工程课程的希望及个人目标

    我是一名桂林理工大学信息科学与工程学院软件工程本科大二年纪的学生 xff0c 热爱学习 xff0c 努力上进 xff0c 对未来充满希望 xff0c 很高兴能学习软件工程这门课程 我对这门课程的希望 xff1a 1 我希望通过学习软件工程这
  • 用HTML、CSS写一个酷炫的动态搜索框

    用HTML CSS写一个酷炫的动态搜索框 可伸展的动态搜索框 xff01 复制粘贴即可用 xff01 HTML部分 xff1a span class token doctype lt DOCTYPE html gt span span cl
  • 使用 curl/git 命令时出现 Failed to connect to XXX port 443: 拒绝连接

    文章目录 原因与过程解决办法 原因与过程 今天在linux下安装docker compose出现Failed connect to github com 443 拒绝连接 网上查了下说是DNS被污染 xff0c 改下host文件 解决办法
  • 【C++】30h速成C++从入门到精通(STL介绍、string类)

    STL简介 什么是STL STL standard template libaray 标准模板库 xff1a 是C 43 43 标准库的重要组成部分 xff0c 不仅是一个可复用的组件库 xff0c 而且是一个包罗数据结构与算法的软件框架
  • redis分布式锁

    1 Redis分布式锁最简单的实现 想要实现分布式锁 xff0c 必须要求 Redis 有 互斥 的能力 xff0c 我们可以使用 SETNX 命令 xff0c 这个命令表示SET if Not Exists xff0c 即如果 key 不
  • 网络边界安全

    防火墙 防火墙的分类 按物理特性划分 软件防火墙硬件防火墙 按性能划分 百兆级防火墙千兆级防火墙 按防火墙结构划分 单一主机防火墙路由集成防火墙分布式防火墙 按防火墙技术划分 包过滤防火墙应用代理防火墙状态检测防火墙 防火墙的功能 访问控制
  • 控制台报错--Module not found: Error: Can‘t resolve ‘core-js/fn/promise‘

    报错信息 xff1a 解决方法 xff1a 原因是vscode会自动导入 import resolve from 39 core js fn promise 39 这一行代码
  • 如何测量无人机电机和螺旋桨的效率?

    为什么要测试电机和螺旋桨 xff1f 首先要确认我们和最终用户的需求是什么 xff1f 因为它将帮助我们发现哪些内容需要优化 xff1a 是否希望增加无人机不间断航拍的续航时长 xff1f 是否希望增加无人机的净载荷 xff1f 是否需要加
  • Jmeter性能测试(23)--分布式测试

    关于jmeter的介绍和元件作用 xff0c 之前的博客介绍过 xff0c 很多其他同行的博客也够详细的 xff0c 这里不做介绍 xff0c 对jmeter不甚了解的可以参考之前的博客 xff1a jmeter xff1a 菜鸟入门到进阶
  • 无人机的电调及其工作原理是什么?

    电子速度控制器 ESC 是电力推进系统的重要硬件组成部分 它就像系统的大脑一样 xff0c 根据从油门控制器接收到的数据信号告诉电机以多快的转速运行 对于无人机和遥控车辆等小型场景应用 xff0c 该控制器的名称为 ESC xff0c 而对
  • 三自由度无人机飞手培训、PID调试、飞行教学、飞控算法验证、故障仿真平台

    无人机在研制过程中需要不断地进行飞行测试 xff0c 而测试的过程不是万无一失的 xff0c 飞行过程中发生任何错误都有可能会导致无人机的损毁或破坏 xff0c 更严重地甚至会造成外界伤害 基于此我们推出了无人机的三旋转自由度 3 DOF
  • shell脚本的执行

    标题 shell脚本的执行 概述 当shell脚本运行时 xff0c 首先会查找系统环境变量ENV xff0c 环境变量指定了环境文件 xff08 加载顺序 etc profile bash profile bashrc etc bashr
  • prometheus(普罗米修斯)

    prometheus 什么是普罗米修斯 xff1f Prometheus是一个开源系统监控和警报工具包 xff0c 最初是在 SoundCloud 上构建的 自2012年成立以来 xff0c 许多公司和组织都采用了Prometheus xf