K8s上的监控系统(Grafana)使用和理解说明

Grafana (集成Prometheus On K8s集成)主要步骤说明

客户端指标收集 —— K8s 集群资源等 —— Prometheus 监控数据收集 —— Grafana —— 通过PromQL 进行数据查询 —— 预警告警等通知

  1. Kubernetes集群资源:这包括了CPU、内存、磁盘、网络等各种类型的资源。这些资源被用于运行容器化的应用程序和服务。
  2. Prometheus:Prometheus是一个开源的监控和警报工具,它可以收集、存储和分析时间序列数据。在Kubernetes集群中,Prometheus可以用于收集各种资源的监控数据。
  3. Grafana:Grafana是一个开源的数据可视化工具,它可以将Prometheus收集的数据以图表的形式展示出来。通过Grafana,我们可以更方便地查看和分析监控数据。
  4. PromQL(Prometheus Query Language):PromQL是一种用于查询Prometheus数据的语言。通过PromQL,我们可以更灵活地对监控数据进行查询和分析。
  5. 预警告警等通知:当监控数据达到预设的阈值时,可以通过多种方式发送预警或告警通知。

K8s的Service主要资源清单说明

  • grafana-exporter: Grafana Exporter是一个Prometheus的exporter,用于将Grafana的监控指标导出到Prometheus中,以便进行集中的监控和报警。

  • kube-state-metrics: kube-state-metrics是一个用于收集Kubernetes集群状态指标的服务。它将Kubernetes的API对象转化为Prometheus可用的指标。

  • metrics-server: Metrics Server是一个用于收集和聚合Kubernetes集群内部资源使用情况的组件。它提供了对CPU、内存等资源使用情况的实时监控和查询。

  • prometheus: Prometheus是一个开源的监控系统,用于收集、存储和查询时间序列数据。在Kubernetes中,Prometheus通常用于收集和监控Kubernetes集群的性能指标和应用程序指标。

  • prometheus-prometheus-node-exporter: Prometheus Node Exporter是一个用于监控主机的Prometheus的exporter。它采集和暴露与主机相关的指标,如CPU使用率、内存使用率、磁盘空间等。

Prometheus在K8s上集成说明

K8s 集群资源:

  • 在Kubernetes集群中,我们有多个节点(Node),每个节点都有一定的资源可用。这些资源包括CPU、内存、磁盘和网络等。在监控方面,我们需要了解每个节点的资源使用情况以及集群的整体资源状况。

Prometheus 监控数据收集:

  • Prometheus是一款开源的监控系统,可以收集和存储各种类型的监控数据。在Kubernetes中,我们可以使用Prometheus来收集节点的资源使用情况以及其他相关的指标。

Grafana:

  • Grafana是一款开源的可视化监控工具,可以将数据以直观的方式展示出来。通过连接Prometheus,我们可以在Grafana中创建仪表盘,以便查看和分析收集的监控数据。

通过PromQL 进行数据查询:

  • PromQL是Prometheus的查询语言,可以用来从收集的监控数据中提取有用的信息。使用PromQL,我们可以根据需求进行数据查询、过滤、聚合和计算等操作。

预警告警等通知:

  • 在监控中,我们需要设置预警规则来监测集群资源的使用情况。一旦某个指标达到预先设定的阈值,系统将触发警报通知管理员或其他相关人员,以便及时采取行动。

任务完成过程:

  1. 配置Prometheus: 首先,我们需要在Kubernetes集群中部署和配置Prometheus来收集监控数据。
  2. 配置Grafana: 接下来,我们需要配置Grafana,使其能够连接到Prometheus并展示监控数据。
  3. 创建仪表盘: 在Grafana中创建一个仪表盘,并选择展示我们关心的节点资源等指标。
  4. 使用PromQL查询数据: 根据需求,在Grafana的查询编辑器中使用PromQL进行数据查询和分析。
  5. 设置预警规则: 在Grafana中设置预警规则,定义阈值和触发条件,以便在资源达到警戒线时发送警报通知。
  6. 监控和预警: 监控Prometheus收集的数据,检查节点资源使用情况,当达到预警条件时,系统将触发警报通知管理员或其他相关人员。
  7. 反馈和优化: 不断观察监控数据,根据情况进行优化和调整,以提高集群的性能和稳定性。

通过以上步骤,我们可以完成对Kubernetes集群资源的监控和预警工作,并且能够根据需要查询和分析监控数据,从而保障集群的正常运行。监控和预警的过程将帮助我们在集群出现问题之前及时发现并解决,提供更好的可用性和稳定性。

PromQL 常用说明

PromQL(Prometheus Query Language)是一种用于查询和分析Prometheus监控系统中的数据的查询语言。以下是一些常见的PromQL查询语句说明:

  1. 基本指标查询:使用<metric_name>来查询指定指标的时间序列数据。例如,http_requests_total表示查询http_requests_total指标的时间序列数据。
  2. 指标筛选:可以使用{<label_name>=<label_value>}来筛选具有特定标签值的时间序列。例如,http_requests_total{job="api-server"}表示筛选出标签job值为api-serverhttp_requests_total指标的时间序列数据。
  3. 范围查询:可以使用[<start_time>:<end_time>]来指定查询的时间范围。时间可以使用Unix时间戳或时间表达式表示。例如,http_requests_total[1618168800:1618172400]表示查询在2021年4月12日10:00到11:00之间的http_requests_total指标的时间序列数据。
  4. 聚合函数:可以使用聚合函数对时间序列数据进行聚合计算。例如,sum(http_requests_total)计算所有时间序列数据的总和值,avg(http_requests_total)计算平均值,max(http_requests_total)计算最大值等。
  5. 算术运算符:可以使用算术运算符对时间序列数据进行计算。例如,http_requests_total{job="api-server"} / http_requests_total{job="web-server"}表示计算api-serverweb-server两个时间序列的比值。
  6. 警报规则:可以使用警报规则来基于一定的查询条件触发报警操作。例如,alertmanager_notifications表示查询所有触发了报警的时间序列数据。

Prometheus 日志服务写入日志不同阶段

Prometheus 的日志写入的过程
(write block) — (Head GC completed) — (Creating checkpoint) — (WAL checkpoint complete)

  • 数据一致性:日志写入过程被划分为几个阶段,每个阶段都有特定的任务。首先,write-block阶段将数据块写入内存中,然后Head GC completed表示垃圾收集阶段完成了,这个阶段确保了不再使用的内存被释放,从而维持系统的有效性。Creating checkpoint表示正在创建一个检查点,这个检查点包含了此时间点的系统状态信息。当WAL checkpoint complete表示日志的写入已经完成并创建了一个检查点。这个阶段确保了所有的数据变动都被记录下来,并且在系统发生故障时可以恢复到之前的状态,从而保证了数据的一致性。
  • 数据可靠性:通过这种构成结构,Prometheus服务器也保证了数据的可靠性。在创建检查点之后,系统会将所有的数据变动都写入到Write-Ahead Log(WAL)中。这个日志是持久化的,也就是说,即使系统发生故障,这些数据变动也会被保留下来,不会丢失。因此,通过这种构成结构,Prometheus服务器确保了数据的可靠性。
  • 系统稳定性:除了数据一致性和可靠性之外,这种构成结构也有助于保证系统的稳定性。在垃圾收集阶段,如果遇到系统资源不足或者内存泄漏等问题,垃圾收集机制会自动调整,以保证系统的正常运行。同时,在创建检查点和写入WAL的过程中,如果出现错误或者异常情况,系统也会自动处理,以保证系统的稳定性。

Prometheus 监控介绍

Prometheus是一套开源的监控系统,它主要用于可靠地记录时间序列数据。为了实现日志数据的可靠性和一致性,以及保持系统的稳定性,Prometheus采用了以下几种技术和方法:

  1. 内存管理:Prometheus使用Go语言编写,这是一种内存管理友好的语言。Prometheus本身也有一套内存管理机制,它能够有效地管理内存,避免内存泄漏和内存溢出等问题。此外,Prometheus还使用了一种缓冲区机制,它能够将日志数据先写入内存中的缓冲区,然后再批量写入磁盘,从而提高了写入性能和可靠性。
  2. 持久化存储:Prometheus使用了一种名为Write-Ahead Log(WAL)的持久化存储机制,来保证日志数据的可靠性和一致性。WAL是一种日志文件,它记录了所有对数据的修改操作。当系统发生故障或崩溃时,Prometheus可以通过回滚WAL来恢复数据。此外,WAL还支持按时间顺序进行截断操作,以减小存储空间的使用量。
  3. 检查点(Checkpoint):Prometheus通过定期创建检查点来保证数据的一致性和可恢复性。检查点是一组元数据,它记录了当前系统的状态信息,包括数据存储的位置和时间等。当系统发生故障时,可以使用检查点来恢复数据。Prometheus会定期创建检查点,并将最后一个检查点作为日志数据的基准点,从而保证数据的一致性和可恢复性。
  4. 分布式架构:Prometheus还支持分布式架构,它可以将数据分散到多个节点上进行存储和管理。这种分布式架构可以提高系统的可靠性和稳定性,因为即使单个节点发生故障,其他节点仍然可以继续提供服务。此外,分布式架构还可以提高数据的一致性和完整性,因为每个节点都可以访问和处理数据,从而减少了单点故障的可能性。

Prometheus 在日志数据的可靠性,一致性和稳定性的说明

数据源可靠性:Prometheus 提供了多种数据采集方式,包括主动采集和被动采集。其中,主动采集是通过 Prometheus 提供的客户端库进行,可以确保采集到实时的监控数据。被动采集是通过 HTTP、文件等方式接收各类应用和系统的指标数据。这样的设计可以确保从不同数据源采集到完整和准确的数据,并且在采集过程中提供弹性和容错机制,以防止数据丢失。

数据存储可靠性:Prometheus 使用自身内置的时间序列数据库来存储采集到的监控数据。该数据库使用持久化存储来保证数据的持久性和可靠性。在写入过程中,Prometheus 会确保数据的持久性,即使在处理大量数据写入的情况下也能保持一致性。同时,Prometheus 还提供了数据备份和恢复机制,以防止任何意外情况导致数据丢失。

一致性:Prometheus 使用基于推模型的数据采集机制,即通过轮询和拉取的方式获取监控数据。这种方式可以确保数据的时效性和一致性,因为每个目标(如应用程序、主机等)都可以按照自己的节奏提供监控数据,而不会受到 Prometheus 的推送速率限制。此外,Prometheus 还支持分布式架构,可以在多个节点上运行,确保高可用性和负载均衡。

系统稳定性:为了保持系统的稳定性,Prometheus 提供了多种机制。首先,它支持自动发现和标记目标,这意味着当新的应用程序或主机启动时,Prometheus 可以自动进行配置和监控。其次,Prometheus 提供了告警功能,允许用户定义和触发自定义的告警规则。这样,可以及时发现系统故障或异常,并进行相应的处理。另外,Prometheus 还支持水平扩展,通过增加新的节点来满足更高的数据处理需求,以保持系统的稳定性。

java客户端库使用(io.prometheus.client)

io.prometheus.client 是一个Java客户端库,用于在Java应用程序中采集和暴露指标数据给Prometheus监控系统。作为一名Prometheus专家,下面是我对io.prometheus.client包的作用的解释:

  1. 数据采集:io.prometheus.client提供了一系列的类和方法,使开发人员能够轻松地在Java应用程序中定义和采集指标数据。通过使用该包提供的Metircs类和相关注解,可以将自定义的指标数据与Java应用程序的不同组件(如方法、类、HTTP请求等)相关联,并定期采集和汇总这些数据。
  2. 指标暴露:io.prometheus.client可以将采集到的指标数据以Prometheus的数据格式进行暴露。通过使用该包提供的HTTP服务器,可以在应用程序中启动一个用于提供指标数据的HTTP端点。Prometheus监控系统可以通过定期访问这个端点来收集指标数据。
  3. 指标类型:io.prometheus.client支持Prometheus支持的多种指标类型,包括计数器(Counter)、直方图(Histogram)、摘要(Summary)和测量(Gauge)。这些指标类型对于不同类型的指标数据提供了灵活性和准确性。
  4. 标签支持:io.prometheus.client允许为指标数据设置标签(Labels),以便更好地分类和标识指标。标签可以用于指定指标数据的不同维度,使得Prometheus可以更精确地查询和聚合指标数据。
  5. 自动发现:io.prometheus.client还支持自动发现机制,可以在应用程序运行时自动注册和发现指标数据。这样,当新的应用程序实例启动时,Prometheus可以自动识别和监控这些实例的指标数据。

总之,io.prometheus.client是一个强大而灵活的Java客户端库,用于在Java应用程序中采集和暴露指标数据。通过使用该库,开发人员可以更方便地将应用程序的关键指标与Prometheus监控系统集成,从而更好地理解和监控应用程序的性能和健康状况。


On the other hand

  • Client Metrics Collection: Various metrics from the Kubernetes cluster, such as resource usage and performance data, are collected from the client nodes using appropriate tools or mechanisms.
  • Kubernetes Cluster Resources: The collected data includes information about the resources utilized by the Kubernetes cluster, such as CPU, memory, storage, and network usage.
  • Prometheus Monitoring Data Collection: Prometheus, a popular monitoring and alerting tool, is used to collect the metrics from the Kubernetes cluster. Prometheus is designed to scrape and store time-series data.
  • Grafana Integration: Grafana, a visualization platform, is integrated with Prometheus to create interactive and visually appealing dashboards. Grafana provides a user-friendly interface for data exploration and visualization.
  • Data Querying with PromQL: PromQL, the query language used by Prometheus, is utilized to query the collected data for specific metrics or time ranges. PromQL allows users to perform complex queries and obtain meaningful insights from the data.
  • Alerting and Notifications: Grafana can be configured to set up alerts and notifications based on predefined thresholds or conditions. When certain metrics cross the specified limit, alerts are triggered, and notifications (via email, Slack, etc.) are sent to responsible parties or teams.

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

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

相关文章

knife4j-openapi3 无法使用swagger注解@ApiModelProperty

问题描述 当使用knife4j springboot3&#xff0c; 发现无法使用 swagger注解ApiModelProperty需要单独导入一个包但是即使导入这个包也不生效&#xff0c;即使配置了description也为空 原因 简单来说&#xff1a;swagger2 > swagger3的时候出现了破坏性的更新 将ApiMode…

基于SSM的培训学校教学管理平台的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

CentOS 7 安装 MySQL 8

一、卸载MariaDB MariaDB是MySQL 的一个分支&#xff0c;完全兼容MySQL&#xff0c;包括API和命令行&#xff0c;使之能轻松成为MySQL的代替品。 1、查看版本&#xff08;如果有就卸载&#xff09; rpm -qa|grep mariadbrpm -e --nodeps 文件名 二、下载mysql 1、进入 /usr/…

多年没有遇到如此流畅的面试了

美东一公司的面试&#xff0c;有多年没有遇到如此流畅的面试了。 本来说的面试时间是 30 分钟&#xff0c;这个还是第一轮处于电话面试那种&#xff0c;但是不知道为什么最后面试整个时间都延长到了快一个小时&#xff0c;貌似双方都还继续沟通下&#xff0c;有点意犹未尽的感觉…

什么是AJAX

AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种用于创建交互式、动态网页应用程序的Web开发技术。它允许网页在不刷新整个页面的情况下&#xff0c;与服务器进行异步通信&#xff0c;以获取或发送数据。以下是对AJAX的主要组成部分和概念的概述&#xff1…

Leetcode 第 361 场周赛题解

Leetcode 第 361 场周赛题解 Leetcode 第 361 场周赛题解题目1&#xff1a;2843. 统计对称整数的数目思路代码复杂度分析 题目2&#xff1a;生成特殊数字的最少操作思路代码复杂度分析 题目3&#xff1a;统计趣味子数组的数目思路代码复杂度分析 题目4&#xff1a;边权重均等查…

华为OD 数组去重和排序(100分)【java】A卷+B卷

华为OD统一考试A卷B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目&#xff0c;A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载&#xff0c;请点击以下链接进入&#xff…

华为云HECS云服务器docker环境下安装nacos

华为云HECS云服务器&#xff0c;安装docker环境&#xff0c;查看如下文章。 华为云HECS安装docker-CSDN博客 一、拉取镜像 docker pull nacos/nacos-server二、宿主机创建挂载目录 执行如下命令&#xff1a; mkdir -p /usr/local/nacos/logs mkdir -p /usr/local/nacos/con…

Coreldraw2020最新64位电脑完整版本下载教程

安装之前所有的杀毒软件都要退出。无论是360&#xff0c;腾讯管家&#xff0c;或者电脑自带的安全中心&#xff0c;要不然会阻止安装。 CorelDRAW2020版win下载如下:https://wm.makeding.com/iclk/?zoneid55678 CorelDRAW2020版mac下载如下:https://wm.makeding.com/iclk/?…

大河弯弯:CSS 文档流与三大元素显示模式

文章目录 参考环境文档流概念三大显示模式 内联元素概念常见的内联元素宽高由内容决定 块级元素概念常见的块级元素宽度受容器影响&#xff0c;高度受内容影响 内联块级元素概念常见的内联块级元素折中方案 设置元素的显示模式display 属性内联元素与块级元素的切换为什么要通过…

使用Matplotlib画多y轴图

使用Matplotlib画多y轴图 代码成品图 代码 import matplotlib.pyplot as plt import mpl_toolkits.axisartist as AA from mpl_toolkits.axes_grid1 import host_subplot%matplotlib inline config {"font.family": "serif","font.size": 14,&…

保序回归与金融时序数据

保序回归在回归问题中的作用是通过拟合一个单调递增或递减的函数&#xff0c;来保持数据点的相对顺序特性。 一、保序回归的作用 主要用于以下情况&#xff1a; 1. 有序数据&#xff1a;当输入数据具有特定的顺序关系时&#xff0c;保序回归可以帮助保持这种顺序关系。例如&…

计算机加减乘除的本质

只应用位运算实现加减乘除是程序员的基本修养&#xff0c;这里应用通俗易懂的python实现加减乘除&#xff0c;其他语言同理。 应对python无限制扩展位数的方法 # 限制变量为32位 def int32(value):return -(value & 0x80000000) | (value & 0x7FFFFFFF)加法,本位进位…

机器学习 | 基于随机森林的可解释性机器学习

可解释性机器学习在当今数据驱动的决策系统中扮演着重要的角色。随着人工智能技术的快速发展,越来越多的应用场景需要了解和解释模型的决策过程,以提高透明度、可信度和可接受性。乳腺癌作为一种常见的恶性肿瘤,早期诊断对于治疗和预后具有重要意义。 然而,乳腺癌早期诊断…

认识系统服务

daemon与service 达成某个服务&#xff08;service&#xff09;需要一个守护进程&#xff08;daemon&#xff09;在后台运行。 实现 ssh 服务&#xff0c;需要 sshd 这个守护进程实现 mysql 服务&#xff0c;需要 mysqld 这个守护进程实现 cron 服务&#xff0c;需要 crond 这…

HttpServlet源码分析及HttpServletRequest接口

2023.10.20 HttpServlet HttpServlet类是专门为HTTP协议准备的。比GenericServlet更加适合HTTP协议下的开发。 http包下都有哪些类和接口呢&#xff1f;&#xff08;jakarta.servlet.http.*&#xff09; jakarta.servlet.http.HttpServlet &#xff08;HTTP协议专用的Servlet…

电源模块测试用例科普:如何调整电压调整率?ATECLOUD-POWER测试系统能否测试?

电压调整率可以控制电压水平&#xff0c;确保设备正常工作&#xff0c;并且可以减少电能浪费&#xff0c;是开关电源测试的其中一个测试项目。那么要如何测试电压调整率呢?测试条件是什么呢? 什么是电压调整率? 电压调整率是指变压器某个绕组的空载电压和指定负载和功率因数…

【SA8295P 源码分析 (四)】35 - QNX侧 Marvell 88Q5152 Phy_Switch 导通实录(硬核)

【SA8295P 源码分析】35 - QNX侧 Marvell 88Q5152 Phy_Switch 导通实录(硬核) 一、硬件原理分析二、88Q5152 芯片读写时序分析2.1 Clause 22 读、写寄存器配置(配置 Port 5 采用C22条款)2.1.1 88Q5152 P5 端口配置2.2 Clause 45 读寄存器时序(配置 Port 1、Port 2 采用C45…

软考系列(系统架构师)- 2019年系统架构师软考案例分析考点

试题一 软件架构&#xff08;架构风格、质量属性&#xff09; 【问题1】&#xff08;13分&#xff09; 针对用户级别与折扣规则管理功能的架构设计问题&#xff0c;李工建议采用面向对象的架构风格&#xff0c;而王工则建议采用基于规则的架构风格。请指出该系统更适合采用哪种…

三网话费余额查询的API系统 基于thinkphp6.0框架

本套系统是用thinkphp6.0框架开发的&#xff0c;PHP需大于8.2&#xff0c;系统支持用户中心在线查询和通过API接口对接发起查询&#xff0c;用户余额充值是对接usdt接口&#xff0c;源码全开源&#xff0c;支持懂技术的人二次开发~搭建教程1、源码上传后&#xff0c;吧运行目录…