云原生监控平台 Prometheus 的相关概念及部署

1 Prometheus简介

      Prometheus 是一个开源的系统监控和报警系统,在 2012 年由 SoundCloud 公司创建,并于 2015 年正式发布。2016 年,Prometheus 正式加入 CNCF (Cloud Native Computing Foundation),成为继kubernetes之后第二个在CNCF托管的项目, 现已广泛用于在容器和微服务领域中得到了广泛的应用,当然不仅限于此Prometheus 本身基于Go语言开发的一套开源的系统监控报警框架和时序列数据库(TSDB)。

Prometheus 的监控功能很完善和全面,性能也足够支撑上万台规模的集群。

网站:Prometheus - Monitoring system & time series database

github:https://github.com/prometheus

其特点主要如下:

  • 支持多维数据模型:由度量名和键值对组成的时间序列数据

  • 内置时间序列数据库TSDB(Time Series Database )

  • 支持PromQL(Prometheus Query Language)查询语言,可以完成非常复杂的查询和分析,对图表展示和告警非常有意义

  • 支持HTTP的Pull方式采集时间序列数据

  • 支持PushGateway采集瞬时任务的数据

  • 支持服务发现和静态配置两种方式发现目标

  • 多种可视化和仪表盘,支持第三方 dashboard, 比如:Grafana

数据特点

  • 监控指标,采用独创的指标格式,我们称之为Prometheus格式,这个格式在监控场景中非常常见。

  • 数据标签,支持多维度标签,每个独立的标签组合都代表一个独立的时间序列

  • 数据处理,prometheus内部支持多种数据的聚合、切割、切片等功能。

  • 数据存储,prometheus支持双精度浮点型数据存储,缺点就是,不能存储文本,所以无法对日志的数据采集,只不过它有替代产品软件叫loki。

适用场景

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

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

       由于Prometheus重视可靠性。在故障情况下,我们可以查看有关系统的可用统计信息。但是如果您需要100%的准确性,则Prometheus并不是一个不错的选择,因为所收集的数据可能不会足够详细和完整。在这种情况下,最好使用其他系统来收集和分析数据以进行计费,并使用Prometheus进行其余的监视

2 Prometheus 架构

官方文档: Overview | Prometheus

     Prometheus 的主要模块包括:Prometheus server, exporters, Pushgateway, PromQL, Alertmanager 以及图形界面

主要组件:

  • prometheus :

    时序数据存储、监控指标管理

  • 可视化:

    prometheus web UI :集群状态管理、promQL

    grafana:非常全面的可视化套件

  • 数据采集

    exporter:为当前的客户端暴露出符合prometheus规格的数据指标

    pushgateway :拉模式下数据的采集工具

  • 监控目标

    服务发现 :文件方式、dns方式、console方式、k8s方式

  • 告警:

    alertmanager

3 Prometheus 数据模型

       Prometheus中存储的数据为时间序列,即基于同一度量标准或者同一时间维度的数据流。除了时间序列数据的正常存储之外,Prometheus还会基于原始数据临时生成新的时间序列数据,用于后续查询的依据或结果

每个时间序列都由metric名称和标签(可选键值对)组合成唯一标识  

3.1 metric 名字

  • 该名字必须有意义,用于表示 metric 的一般性功能,例如:http_requests_total, 表示 http 请求的总数

  • metric 名字由 ASCII 字符,数字,下划线,以及冒号组成,且必须满足正则表达式 [a-zA-Z]:[a-zAZ0-9_:]*的查询需求

  • 注意:冒号是为用户定义的记录规则保留的

3.2 标签

  • 标签是以键值对的样式而存在,不同的标签用于表示时间序列的不同维度标识

  • 基本格式:

<metric name>{<label name>=<label value>, …}
#示例样式:
http_requests_total{method="POST",endpoint="/api/tracks"}
解析: http_requests_total{method="POST"} 表示所有 http 请求中的 POST 请求,
endpoint="/api/tracks"表示请求的url地址是/api/tracks。
当 method="GET" 时,则为新的一个 metric
  • 标签中的键名由 ASCII 字符,数字,以及下划线组成,且必须满足正则表达式 [a-zA-Z: [a-zA-Z0- 9:]*。以__头的标签名称保留供内部使用

  • 标签值可以包含任何Unicode字符,标签值为空的标签被认为等同于不存在的标签

查询语言允许基于这些维度进行过滤和聚合。更改任何标签值,包括添加或删除标签,都会创建一个新的时间序列

4 Prometheus 部署

4.1 常见部署方式

  • 包安装

    RHEL系统: prometheus-rpm/release - Results in prometheus-rpm/release

    Ubuntu和Debian可直接使用apt命令安装

  • 二进制安装 Download | Prometheus

  • 基于 docker 运行 Installation | Prometheus

  • 基于 kubernetes operator 安装 https://github.com/coreos/kube-prometheus

4.2 docker 镜像直接启动

#安装docker
[root@master1 ~]# yum install docker -y
[root@master1 ~]# systemctl enable --now docker#将prometheus镜像包上传到linux系统中
#导入镜像
#docker load -i prometheus.tar[root@master1 ~]# docker run -d --name prometheus -p 9090:9090 prom/prometheus

 浏览器访问:http://prometheus服务器:9090/

4.3 二进制安装 prometheus

4.3.1 下载二进制包并解压

官方下载: Download | Prometheus

[root@master1 ~]#wget https://github.com/prometheus/prometheus/releases/download/v2.35.0/prometheus-2.35.0.linux-amd64.tar.gz[root@master1 ~]#ls -l prometheus-2.35.0.linux-amd64.tar.gz 
-rw-r--r-- 1 root root 80620181 Apr 21 10:07 prometheus-2.35.0.linux-amd64.tar.gz[root@master1 ~]#tar xf prometheus-2.35.0.linux-amd64.tar.gz [root@master1 ~]#ln -s /root/prometheus-2.35.0.linux-amd64 /usr/local/prometheus[root@master1 ~]#cd /usr/local/prometheus[root@master1 /usr/local/prometheus]#ls
console_libraries  consoles  LICENSE  NOTICE  prometheus  prometheus.yml  promtool[root@master1 /usr/local/prometheus]#mkdir bin conf data[root@master1 /usr/local/prometheus]#mv prometheus promtool bin/[root@master1 /usr/local/prometheus]#mv prometheus.yml conf/[root@master1 /usr/local/prometheus]#useradd -r -s /sbin/nologin prometheus[root@master1 /usr/local/prometheus]#chown -R prometheus.prometheus /usr/local/prometheus/[root@master1 /usr/local/prometheus]#cd[root@master1 ~]#vim /etc/profile.d/prometheus.sh
export PROMETHEUS_HOME=/usr/local/prometheus
export PATH=${PROMETHEUS_HOME}/bin:$PATH[root@master1 ~]#source /etc/profile.d/prometheus.sh#查看配置文件,默认可不修改
[root@master1 ~]#grep -Ev "^ *#|^$" /usr/local/prometheus/conf/prometheus.yml
global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
alerting:alertmanagers:- static_configs:- targets:
rule_files:
scrape_configs:- job_name: "prometheus"static_configs:- targets: ["localhost:9090"]#属性解析:主要是global和 scrape_configs 两部分的配置,在这里目前我们保持默认即可#检查配置文件是否正确
[root@master1 ~]#promtool check config /usr/local/prometheus/conf/prometheus.yml
Checking /usr/local/prometheus/conf/prometheus.ymlSUCCESS: /usr/local/prometheus/conf/prometheus.yml is valid prometheus config file syntax

4.3.2 创建service文件

[root@master1 ~]#vim /lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target[Service]
Restart=on-failure
User=root
WorkingDirectory=/usr/local/prometheus/
ExecStart=/usr/local/prometheus/bin/prometheus --config.file=/usr/local/prometheus/conf/prometheus.yml
ExecReload=/bin/kill -HUP $MAINPID
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target#配置解析:
#我们需要将定制的prometheus的配置文件和数据目录作为启动参数配置好
#其它的参数,可以基于prometheus --help 查看更多[root@master1 ~]#systemctl daemon-reload[root@master1 ~]#systemctl restart prometheus[root@master1 ~]#systemctl status prometheus[root@master1 ~]#ss -tnlp |grep prometheus
LISTEN 0      4096               *:9090            *:*    users:(("prometheus",pid=6488,fd=8))#结果显示:可以看到当前主机上可以看到一个端口9090,可通过下面地址看到prometheus的服务页面

4.3.3 测试访问

浏览器访问: http://192.168.3.21:9090/

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

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

相关文章

菜鸡shader:L5 fresnel、matcap和cubemap

文章目录 Fresnelshader forge实现UE4蓝图实现 Matcapshader forge实现UE4蓝图实现 CubeMapSD和PS制作所需的贴图shader forge实现unity代码实现UE4蓝图实现(未实现) Fresnel shader forge实现 个人理解是&#xff0c;使用观察方向和法向方向点乘&#xff0c;那就相当于我们的视…

聚合函数group byhaving

聚合函数&group by group by 字段名 规定依据哪个字段分组聚合 group by核心子句是可选项&#xff0c;使用该子句是为了依据相同字段值分组后进行聚合运算&#xff0c;常和聚合函数联用 不使用group by 子句时使用聚合函数&#xff0c;select子句中只能写聚合函数和包含聚…

(16)燃油流量和液位传感器

文章目录 前言 16.1 燃油流量传感器 16.1.1 连接到自动驾驶仪 16.2 燃油液位传感器 16.2.1 PWM油位传感器 16.2.2 模拟油位传感器 前言 在 4.0 及以后的固件版本中&#xff0c;ArduPilot 提供了使用燃油流量和液位传感器的能力&#xff0c;此外还有电池监控器。支持脉冲输…

Linux入门

文章目录 一、Linux安装1.1、安装方式介绍1.2、网卡设置1.3、安装SSH连接工具1.4、Linux和windows目录结构对比1.5、Linux目录结构 2、Linux常用命令2.1、Linux命令初体验2.2、使用技巧2.3、命令格式2.4、文件目录操作命令文件目录操作命令ls小知识 文件目录操作命令cat文件目录…

农产品批发采购APP开发 手机里的农产品市场

农业发展是民生之本&#xff0c;随着互联网时代的到来各行各业都迎来了新的发展机遇&#xff0c;农产品批发采购、配送服务等方面也发生了很大的改变&#xff0c;各种农产品商城APP、农产品批发采购平台、农产品供应管理系统的开发让包含农产品信息、数据、物流、配送、仓储、质…

决策树精讲

一、决策树的构造 决策树的构造是一个递归的过程&#xff0c;有三种情形会导致递归返回&#xff1a;(1)当前结点包含的样本全属于同一类别&#xff0c;这时直接将该结点标记为叶结点&#xff0c;并设为相应的类别&#xff1b;(2)当前属性集为空&#xff0c;或是所有样本在所有…

STM32外设系列—DHT11

文章标题 一、DHT11简介二、数据手册分析2.1 接口说明2.2 串行通信说明2.2.1 单总线通信2.2.2 单总线传输数据位定义2.2.3 时序图 三、DHT11程序设计3.1 初始化GPIO3.2 发送起始信号3.3 接收一个字节数据3.4 接收温湿度信息并校准 四、总结 一、DHT11简介 DHT11是一款常用的数…

【新星计划·2023】Linux内核、发行版讲解,它们有什么区别?

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、Linux内核版 二、Linux发行版 1、Debian 2、Slackware 3、Red Hat 4、Gentoo 三、内核版和发行版的区别 1、内核版 2、发行…

BUUCTF 还原大师 1

题目描述&#xff1a; 我们得到了一串神秘字符串&#xff1a;TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母&#xff0c;为了确定这个神秘字符串&#xff0c;我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全&#xff0c;E903???4D…

计算机启动

按下主机上的 power 键后&#xff0c;第一个运行的软件是 BIOS,BIOS 全称叫 Base Input & Output System&#xff0c;即基本输入输出系统。 &#xff08;8086的1MB内存&#xff09; 地址 0&#xff5e;0x9FFFF 处是 DRAM&#xff0c;顶部的 0xF0000&#xff5e;0xFFFFF&am…

AR急诊急救大平台远程专家会诊方案

随着AR技术的完善&#xff0c;在医院急救中&#xff0c;需要及时把各方面专家汇在一起会诊&#xff0c;在AR这方面有数据采集清晰&#xff0c;资料呈现方便便捷&#xff0c;针对客户需要&#xff0c;我们对业务需求分析&#xff0c;比较市面多种产品&#xff0c;把会议&#xf…

【OpenCV DNN】Flask 视频监控目标检测教程 10

欢迎关注『OpenCV DNN Youcans』系列&#xff0c;持续更新中 【OpenCV DNN】Flask 视频监控目标检测教程 10 3.10 OpenCV DNNFlask实时监控目标检测1、加载MobileNet SSD模型2、导入分类名称文件3、处理视频帧进行目标检测4、新建一个Flask项目5、Python 程序文件6、视频流的网…