Promethus(普罗米修斯)安装与配置(亲测可用)

news2024/12/28 18:24:17

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. 时间序列数据


什么是序列数据
时间序列数据(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.8.121prometheus
node1192.168.8.120node_exporter

4.1准备工作

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

  • 服务端:Download | Prometheus
  • 客户端:Download | Prometheus

4.2下载软件包
 

 

 选择对应的系统进行下载

4.3解压缩包

[root@node2 ~]# tar xf prometheus-2.47.0.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.47.0.linux-amd64  sbin   src

[root@node2 local]# mv prometheus-47.0.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 下载软件包

 

6.2 解压软件包

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

[root@node1 ~]# tar xf node_exporter-1.6.1.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.6.1.linux-amd64  share

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

6.3 启动参数介绍

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

6.4 配置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.5 在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.8.120:9100"]    //此处指定客户端ip和端口

6.6访问测试是否连接成功

使用Prometheus主机IP地址和端口号 http://192.168.8.121:9090/targets访问
 

 

 

 

 本文到这里搭建就结束了,接下来大家自己去体会吧,总之还是很强的

 

 

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

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

相关文章

Matlab图像处理-Lab模型

Lab模型 Lab模型是由CIE&#xff08;国际照明委员会&#xff09;制定的一种彩色模型。该模型与设备无关&#xff0c;弥补了RGB模型和CMYK模型必须依赖于设备颜色特性的不足&#xff1b; 另外&#xff0c;自然界中的任何颜色都可以在Lab空间中表现出来&#xff0c;也就是说RGB和…

http-server的安装、前端使用http-server启本地服务

http-server 简介 http-server 是一个简单的零配置的命令行http服务器&#xff0c;它足够强大便于生产和使用&#xff0c;用于本地测试和开发。 有时候我们打开一个文档使用file协议打开的时候&#xff0c;不能发送ajax请求&#xff0c;只能使用http协议才能请求资源&#xff…

河道水位监测,助力守护河流生态可持续发展

河流是地球生命的源泉&#xff0c;它们滋养着万物&#xff0c;为生态系统提供源源不断的能量。然而&#xff0c;随着全球气候变化和人类活动的加剧&#xff0c;河流面临的问题也日益严重&#xff0c;如水位剧烈波动、水质恶化等。河道水位监测对于保护河流生态环境&#xff0c;…

jsp tag文件使用入门

Tag文件是拓展名为.tag的文件&#xff0c;其内容中可以有普通的HTML标记符、某些特殊的指令标记、成员变量声明和方法的定义、java程序片和java表达示。 Tag文件可以实现代码的复用&#xff0c;即一个Tag文件可以被多个jsp页面使用。 在WEB服务目录下创建如下目录&#xff0c; …

Docker 容器设置为自动重启

Docker自动重启原因 Docker自动重启通常是由以下几个原因导致的&#xff1a; 程序崩溃系统内存不足系统进程使用过多CPU和RAM导致的阻塞docker容器被杀死或重新启动&#xff0c;导致应用程序中断网络中断 当这些问题出现时&#xff0c;Docker会自动重启运行中的服务来尝试解…

图解 LeetCode 算法汇总——双指针

双指针算法是一种比较常用于搜索链表或数组相关的问题&#xff0c;很多算法的基本的解题思路就是使用暴力搜索法。而双指针是对暴力搜索的一种优化&#xff0c;通过双指针可以减少数据的遍历次数。通常双指针是有两个指针&#xff0c;叫做 light 左指针和 right 右指针&#xf…

redis 核心数据结构

一、简述 redis是一个开源的使用C语言编写的一个kv存储系统&#xff0c;是一个速度非常快的非关系远程内存数据库。它支持包括String、List、Set、Zset、hash五种数据结构。 除此之外&#xff0c;通过复制、持久化和客户端分片等特性&#xff0c;用户可以很方便地将redis扩展…

Ansys Zemax | 如何建立二向分色分光镜

分光镜(Beam splitter)可被运用在许多不同的场合。一般而言&#xff0c;入射光抵达二向分色分光镜(dichroic beam splitter)时&#xff0c;会根据波长的差异产生穿透或反射的现象。这篇文章将说明如何在OpticStudio的非序列模式(non-sequential mode)中建立二向分色分光镜&…

IT技术总监的成长之路

目录 1.CIO之说 2.新职业机会的出现 3.IT主管的两个发展机会 4.七分管理三分技术的CIO 5.七分技术三分管理的CTO 6.CIO的职业规划要求 6.1. 企业战略管理 6.2.信息资源规划 6.3.生产过程管理 6.4. 项目管理 6.5.物流管理 6.6.网络规划与建设 6.7.信息安全技术 6.…

zabbix网络管理安装教程

安装&#xff1a; apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent 参考资源&#xff1a; 官网&#xff1a; 下载&#xff1a; 其它&#xff1a; 常用指令&#xff1a; 目标与应用价值&#xff1a; 部署难点&#…

友思特新闻|友思特与IDS深化战略合作伙伴关系

尊敬的客户和合作伙伴&#xff0c; 我们非常高兴地宣布&#xff0c;友思特已经与国际领先的机器视觉解决方案提供商 IDS 深化了我们的合作关系。 作为 IDS 的长期合作伙伴&#xff0c;友思特一直致力于为国内客户提供最先进的机器视觉技术和解决方案。 自从友思特与 IDS 合作…

新的~

我昨天加班解决一个概率性出现的bug&#xff0c;这个概率性的问题先介绍下。 の如果正常开机上电&#xff0c;ADC是可以正常工作的&#xff0c;出现问题的时候会开机概率性出现ADC工作不正常&#xff0c;如果工作不正常&#xff0c;重新配置寄存器也不会正常。 の如果开机后ADC…

Ansys Zemax | 光学系统设计中如何使用玻璃替换方法来优化玻璃

在光学系统中选择最优玻璃材料时&#xff0c;Conrady d-D以及模型玻璃等传统的玻璃选择方法提供的帮助有限。本文介绍了如何使用玻璃替换方法进行直接玻璃优化&#xff0c;以及在考虑玻璃的可用性、成本及耐候性等因素时&#xff0c;如何进一步严格挑选玻璃。 简介 玻璃替换方法…

node绿色版本升级

node绿色版本升级 安装绿色版本&#xff1a; 1.非管理员没有安装软件的权限&#xff0c;因此不能直接使用安装包&#xff0c;因此想到了使用绿色版本 2.之前已安装一个版本&#xff0c;因此环境变量的设置已经完成 直接下载绿色的版本&#xff0c;找到之前的安装位置&#xff0…

FX3U PLC高速计数器(摆杆编码器角度测量梯形图代码)

FX3U的高速计数器接线和基本配置,请查看下面文章链接: 三菱FX3U PLC高速计数器应用(附代码)_三菱高速计数器的使用_RXXW_Dor的博客-CSDN博客本文主要以三菱FX3U系列的高速计数为例来讲解,我们简单的看下三菱的编程手册对高速计数器的描述,工业现场建议大家采用AB双向计数…

Gitlab----Shell类型的gitlab-runer设置以root权限执行

【原文链接】Gitlab----Shell类型的gitlab-runer如何设置以root权限执行 1 编辑修改 /etc/systemd/system/gitlab-runner.service 文件&#xff0c;将 --user 修改为 root 2 重启服务 执行如下命令重启 gitlab-runer 服务 systemctl daemon-reload systemctl restart gitlab…

C++项目中mysql的环境配置

第一步创建好项目&#xff0c;选择X64架构 此次项目采用动态库在项目文件夹加入mysql的库分别为libmysql.dll和include 在包含目录中填入相对路径 添加附加依赖项 现在我们写一个开发环境验证代码&#xff0c;检查一下环境是否配置成功 F7生成此时完美运行 至此环境已经配置完成…

VR+中医骨伤学仿真情景实训教学|英途信息

首先&#xff0c;VR骨伤学虚拟实训教学可以突破地域限制。传统的实训教学需要学生亲身前往实地进行观察学习&#xff0c;但这常常受到时间、地点和费用等方面的限制。而通过虚拟现实技术&#xff0c;学生只需佩戴VR头盔&#xff0c;便可随时随地进行学习和实训&#xff0c;无需…

序列化和反序列化:将数据变得更加通用化

序列化与反序列化简介 序列化和反序列化是计算机领域中常用的概念&#xff0c;用于将对象或数据结构转换为字节序列&#xff08;序列化&#xff09;和将字节序列转换回对象或数据结构&#xff08;反序列化&#xff09;。 序列化是指将对象或数据结构转换为字节序列的过程。通…

Git使用方法与IDEA集成Git

1.Git介绍 1.1版本控制(理解) 无论是代码编写&#xff0c;还是文档编写&#xff0c;我们都会遇到对文档内容反复修改的情况。 1.2开发中存在的问题(理解) 程序员小明负责的模块就要完成了&#xff0c;就在即将提交发布之前的一瞬间&#xff0c;电脑突然蓝屏&#xff0c;硬盘…