[单master节点k8s部署]16.监控系统构建(一)Prometheus介绍

news2025/2/28 1:31:32
prometheus

prometheus是继k8s之后,第二个被托管到CNCF的项目,是一个开源的监控报警系统。

1.prometheus支持多维数据模型,每一个时间序列数据都由metric度量指标名称和它的标签label组成一组键值对。

2.Prometheus有自己的PromQL查询语言。

3.Prometheus可以直接在本地部署,不依赖分布式存储。

4.基于HTTP的pull方式采集时序数据。

5.可以通过中间网关pushgateway的方式把时间序列数据推送到Prometheus server端。

6.可以配置动态静态的服务发现。

7.搭配granfa进行可视化。

8.高效存储,每个采样数据占3.5 bytes左右。

9.可以对数据做异地备份,实现高可用。

prometheus结构

下图为Prometheus的结构,可以看到retrieval用来收集数据,要么是从例如sql、nginx等有自己exporter的服务里面收集,要么是从一些动态创建的jobs里面收集,这些生命周期较短的job会把自己的数据推送到pushgateway,然后统一由retrieval收集。

TSDB全称为time series database,是存储时序数据的数据库,由promQL语言进行操作

HTTP server 是一个关键组件,它主要负责处理外部的 HTTP 请求。这包括接收来自用户(通过 Prometheus 的 Web UI)、API 客户端(如 Grafana)或其他系统(如 Alertmanager)的查询和命令。

服务发现:可以配置静态的服务发现如file_sd,或者动态的服务发现如k8s集群中的服务发现。

TSDB可以配置报警规则,但是真正报警的是alertmanager。

zbbix

zbbix是一个发展了十年的监控插件。prometheus是用go开发的,zbbix是用C++开发的。zbbix用的是关系型数据库,而Prometheus使用的是时序数据库,更适合数据聚合。Prometheus安装比较复杂,而zbbix安装比较简单。

部署方式

基本高可用:每个节点部署一个Prometheus,共享数据,但是一旦一个节点上的Prometheus坏掉,就会导致数据丢失。这种方式在Prometheus server前面放置一个elastic load balancer,用来负载均衡。基本的 HA 模式只能确保 Promthues 服务的可用性问题,但是不解决 Prometheus Server 之间的数据 一致性问题以及持久化问题(数据丢失后无法恢复),也无法进行动态的扩展。因此这种部署方式适合监 控规模不大,Promthues Server 也不会频繁发生迁移的情况,并且只需要保存短周期监控数据的场景。

高可用+远程存储:在解决了 Promthues 服务可用性的基础上,同时确保了数据的持久化,当 Promthues Server 发生宕 机或者数据丢失的情况下,可以快速的恢复。 同时 Promthues Server 可能很好的进行迁移。因此,该 方案适用于用户监控规模不大,但是希望能够将监控数据持久化,同时能够确保 Promthues Server 的可 迁移性的场景。

基本高可用+远程存储+联邦集群:Promthues 的性能瓶颈主要在于大量的采集任务,因此用户需要利用 Prometheus 联邦集群的特性, 将不同类型的采集任务划分到不同的 Promthues 子服务中,从而实现功能分区。

三种方式如下图

数据类型

counter:只能增加的指标,一般用于计数。重启进程后会被重置。

gauge: 是一个可以增加也可以减小的类型,常用于度量当前的数值,如当前内存使用量、正在处理的任务数量或温度。重启进程后会被重置。

histogram: 柱状图。

summary: 用于表示一段时间内的数据采样结果(通常是请求持续时间或响应大小等),但它直接存储了分位数(通过客户端计算,然后展示出来),而不是通过区间来计算。

在大多数情况下人们都倾向于使用某些量化指标的平均值,例如 CPU 的平均使用率、页面的平均响应时间。这种方式的问题很明显,以系统 API 调用的平均响应时间为例:如果大多数 API 请求都维持在 100ms 的响应时间范围内,而个别请求的响应时间需要 5s,那么就会导致某些 WEB 页面的响应时间落到中位数的情况,而这种现象被称为长尾问题。
为了区分是平均的慢还是长尾的慢,最简单的方式就是按照请求延迟的范围进行分组。例如,统计
延迟在 0~10ms 之间的请求数有多少,而 10~20ms 之间的请求数又有多少。通过这种方式可以快速分析系统慢的原因。Histogram 和 Summary 都是为了能够解决这样问题的存在,通过 Histogram 和 Summary 类型的监控指标,我们可以快速了解监控样本的分布情况。
Prometheus对k8s的监控

对于k8s而言,资源可以分为以下几类:

基础设置层(Node):集群节点,为整个集群和应用提供运行时资源。

容器基础设置(Container):为应用提供环境。

用户应用(Pod): 包含一组容器。

内部负载均衡(Service): 在集群内通过Service暴露应用功能,集群内应用和应用之间访问时提供内部的负载均衡。(可以对外暴露端口,但是功能比较单一)

外部访问入口(Ingress): 通过ingress提供集群外的访问入口,从而可以使外部客户端访问到部署在kubernetes中的服务。

  • service

    • 内部负载均衡:默认情况下(ClusterIP 类型),Service 提供集群内部的负载均衡和服务发现。
    • 外部暴露:可以使用 NodePort 或 LoadBalancer 类型来暴露服务,使其可以从集群外部访问,但这些方法相对简单,适用于特定场景。
  • Ingress

    • 外部访问入口:Ingress 提供了一个更灵活和强大的方式来管理外部流量。通过 Ingress 资源,可以定义复杂的路由规则,并通过 Ingress Controller(如 Nginx Ingress Controller)来管理这些规则。
    • 高级功能:支持基于路径和主机名的路由、SSL 终结等高级功能。

基于以上分析,在不考虑k8s本身组件的情况下,对它进行监控要考虑以下5个方面:

  • 集群节点状态的监控:获取最基本的节点运行状态。
  • 节点资源用量监控:通过daemonset的形式在各个节点部署node exporter,采集节点资源的使用情况。
  • 容器运行情况的监控:通过内置在container中的cadvisor来监控容器。
  • 对Prometheus内置的监控pod的数据采集
  • k8s本身的kubelet等组件进行监控。
NodeExporter对node监控

在每个节点上部署node-exporter,以daemonset的方式

[root@master prometheus]# cat node-export.yaml 
apiVersion: apps/v1
kind: DaemonSet
metadata: 
  name: node-exporter
  namespace: monitor-sa
spec:
  selector:
    matchLabels:
       app: node-exporter
  template:
    metadata:
      name: node-exporter
      labels:
        app: node-exporter
   spec:
     hostIPC: true
     hostPID: true
     hostNetwork: true
# hostNetwork、hostIPC、hostPID 都为 True 时,表示这个 Pod 里的所有容器,
# 会直接使用宿主机的网络,直接与宿主机进行 IPC(进程间通信)通信,
# 可以看到宿主机里正在运行的所有进程。
     containers:
     - name: node-exporter
       image: prom/node-exporter:v0.16.0
       imagePullPolicy: IfNotPresent
       ports:
       - containerPort: 9100
       securityContext:
         privileged: true
       resource:
         requests:
           cpu: 0.15
       args:
       - --path.procfs
       - /host/profc
       - --path.sysfs
       - /host/sys
       - --controller.filesystem.ignored-mount-points
       - '"^/(sys|proc|dev|host|etc)($|/)"'
       volumeMounts:
       - name: dev
         mountPath: /host/dev
       - name: proc
         mountPath: /host/proc
       - name: sys 
         mountPath: /host/sys 
       - name: rootfs 
         mountPath: /rootfs
     tolerations:
     - key: "node-role.kubernetes.io/master"
       effect: "NoSchedule"
       operator: "Exists" 
     volumes: 
     - name: proc 
       hostPath: 
         path: /proc
     - name: dev 
       hostPath: 
         path: /dev 
     - name: sys 
       hostPath: 
         path: /sys 
     - name: rootfs 
       hostPath: 
         path: /

proc和sys、dev里面有node的实时运行信息。

运行成功后,可以通过metrics查看node信息,比如过滤 node_cpu_seconds,node_load等信息。

[root@master prometheus]# curl http://100.64.252.90:9100/metrics > 1.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  104k  100  104k    0     0  17.7M      0 --:--:-- --:--:-- --:--:-- 20.3M
[root@master prometheus]# curl http://100.64.252.90:9100/mtrics  | grep node_load
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   150  100   150    0     0   187k      0 --:--:-- --:--:-- --:--:--  146k

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

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

相关文章

mac|Mysql WorkBench导入文件失败(修改编码)

⚠️:表格中有中文的不适用表格中有中文的不适用表格中有中文的不适用表格中有中文的不适用 我有一个excel表,想导入到mysql数据库中,但是Workbench的导入格式只支持csv,通过excel、wps将excel另存为csv文件进行导入 导入会因为编…

Swift 中强大的 Key Paths(键路径)机制趣谈(下)

概览 在上一篇博文 Swift 中强大的 Key Paths(键路径)机制趣谈(上)中,我们介绍了 Swift 语言中键路径机制的基础知识,并举了若干例子讨论了它的一些用武之地。 而在本文中我们将再接再厉,继续有趣的键路径大冒险,为 KeyPaths 画上一个圆满的句号。 在本篇博文中,您将…

高考服务系统

摘 要 每年有大批考生在进行填写高考志愿时并不很清楚自己的高考分数适合那些高校以及专业。高考考生面临着未被高校录取,被调剂专业,甚至可能复读的问题。若能让考生轻松查询到高校录取、高校专业、高校招生等相关信息,能减少很大一部分考生…

2007-2023年36家商业银行绿色信贷、期末贷款总额、银行总资产等相关指标数据(2023年无缺失)

2007-2023年36家商业银行绿色信贷数据(2023年无缺失) 1.时间:2007-2023年,2023年无缺失 2.来源:银行年报和社会责任报告 3.指标:绿色信贷余额、期末贷款总额、绿色信贷比率、总资产收益率、流动性比率、拨备覆盖率、…

svn忽略上传文件node_modules文件

文章目录 1.点击svn项目右键-》选中svn的属性2. 点击 新建3. 点击其他4. 选择属性 svn:global-ignores5. 输入忽略文件 1.点击svn项目右键-》选中svn的属性 2. 点击 新建 3. 点击其他 4. 选择属性 svn:global-ignores 5. 输入忽略文件

通信软件开发之业务知识:PON口割接什么意思?

一 PON口割接(原创总结) 在通信领域,PON口割接指的是对无源光网络(Passive Optical Network,PON)端口进行的切换或调整操作。简单来说,就是对光纤网络中的某个端口进行重新连接或重新分配&…

C++基础(四):C++入门(三)

通过前面的学习,我们已经掌握了一些最基本的C入门知识,这一篇博客我们主要聚焦于:C/C内存管理和C11的一些新特性,为后续深入学习做好铺垫。 目录 一、C/C内存管理 1.1 C/C内存分布 1.2 C语言中动态内存管理方式:ma…

漆包线行业生产管理革新:万界星空科技MES系统解决方案

一、引言 在科技日新月异的今天,万界星空科技凭借其在智能制造领域的深厚积累,为漆包线行业量身打造了一套先进的生产管理执行系统(MES)解决方案。随着市场竞争的加剧,漆包线作为电气设备的核心材料,其生产…

再回首,什么是人工智能?

文章目录 一、说明二、什么是人工智能?三、人工智能的类型:弱人工智能与强人工智能四、深度学习与机器学习五、生成模型的兴起六、人工智能应用6.1 语音识别6.2 客户服务6.3 计算机视觉6.4 供应链6.5 天气预报6.6 异常检测 七、人工智能的历史&#xff1…

AI赋能视创云展元宇宙展厅,打造沉浸式智能观展体验!

在AI人工智能迅猛发展的背景下,视创云展将元宇宙展厅与“AI智能助手”深度融合,这无疑是一次前瞻性的创新尝试,极大地丰富了展览展示的形式与内容,为参观者打造了一个既沉浸又智能的观展新纪元。 一、沉浸式体验 元宇宙展厅利用虚…

将excel表格转换为element table(下)

在‘将excel表格转换为element table(上)’我们把excel 转换后通过数据重构绑定到了element table上,现在要做的就是根据源文件进行行列进行合并操作 先看看最终处理的结果 这里在一步步分析实现步骤。 先分析一下合并的逻辑 大致思路理理如上。 思路有了接下来…

ALZET渗透泵怎么用之常见问题解答

ALZET渗透压泵是微型植入式泵,适用于小鼠,大鼠和其他实验室动物的研究。这些微型泵以连续和受控的速率输送药物,激素和其他测试剂,持续时间从一天到六周,无需外部连接或频繁处理。无人值守的操作消除了实验室人员重复夜…

(番外篇)指针的一些相关习题讲解(速进,干货满满)(2)

前言: 小编感觉最近有点太堕落,于是我开始从事这篇文章的撰写,现在也是进入七月份了,我现在文章开头定一个小目标,我决定在七月份发布至少十篇文章,希望我可以说到做到(我前面就口头欠了不少文章…

不同系统间数据交换要通过 api 不能直接数据库访问

很多大数据开发提供数据给外部系统直接给表结构,这是不好的方式。在不同系统间进行数据交换时,通过API(应用程序编程接口)而非直接访问数据库是现代系统集成的一种最佳实践。 目录 为什么要通过API进行数据交换如何通过API进行数据…

RFID技术在印度铁路上的革新应用

Kavach系统是一种利用RFID技术的先进列车事故防撞系统,特别设计用于印度铁路网络,旨在减少在同一轨道上运行的列车事故。最近在西孟加拉邦大吉岭地区发生的可怕火车事故再次突显了这一系统的重要性和必要性。 Kavach系统由研究设计与标准组织&#xff08…

Android 抓取 CPU 资源信息

在 Android 开发中,使用 ADB(Android Debug Bridge)命令获取 CPU 资源信息有很多重要的作用。这些命令可以帮助开发者在多种情况下分析和优化应用性能、解决问题以及进行系统性调试。 以下列举一些 ABD 获取 CPU 资源信息的命令 获取 CPU 核…

MYSQL substring_index

1.substring_index( 参数1,参数2 ,参数3 ) 2.group by 也可以用我们起的别名来划分,以及起别名可以不用as SELECT IF(profile LIKE %female,female,male) gender,COUNT(*) number FROM user_submitGROUP BY gender; 3.切割、截取、删除、替换 select -- 替换法 r…

ffmpeg在powershell和ubuntu终端下的不同格式

在win10下的powershell中,如果想运行一个exe文件,就不能再像cmd命令行一样用名字来直接运行了,否则会提示格式不对。 正确的做法是: . \ffmpeg.exe -re -i video-test.mpr -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://您的…

数据库管理系统中的磁盘、文件、页和记录管理

1. 引言 数据库管理系统(DBMS)是一个复杂的软件系统,用于管理和操作数据库中的数据。DBMS需要有效地在磁盘和内存之间组织和管理数据,以确保高效的数据存储和检索。本文将详细介绍DBMS中关于磁盘、文件、页和记录的管理&#xff…

模电-运放的供电

模电-运放的供电 Fang XS.1452512966qq.com如果有错误,希望被指出,学习技术的路难免会磕磕绊绊量的积累引起质的变化注:本文章为唐老师讲电赛视频的个人笔记 运放的供电 所有的运放都可以单电源和双电源供电;采用双电源供电的运…