Azure AKS集群监控告警表达式配置

news2024/11/16 10:30:37

背景需求

Azure AKS集群中,需要对部署的服务进行监控和告警,需要创建并启用预警规则,而这里怎么去监控每个pod级别的CPU和内存,需要自己写搜索查询
在这里插入图片描述

解决方法

搜索和查询的语句如下,需要自己替换其中的部分信息,其中的clusterID需要在AKS集群中的概述-右侧JSON视图-id,其中id就是我们要的clusterID,然后替换下面的clusterID字段内容。最后的 percentage 也需要根据实际情况来设置对应值。

#内存
let metricUsageCounterName = 'memoryRssBytes';
let metricLimitCounterName = 'memoryLimitBytes';
let clusterID = "/subscriptions/xxxxxxxxxxx";
let CachedFilteredPerfTable = Perf
| where ObjectName == 'K8SContainer'
| where InstanceName startswith clusterID
| project Node = Computer, TimeGenerated, CounterName, CounterValue, InstanceName;
let LimitsTable = CachedFilteredPerfTable
| where CounterName =~ metricLimitCounterName
| summarize arg_max(TimeGenerated, *) by Node, InstanceName
| project Node, InstanceName, LimitsValue = CounterValue, TimeGenerated;
let MetaDataTable = KubePodInventory
| where isnotempty(ClusterName) | where isnotempty(Namespace) | where isnotempty(Computer)
| where ClusterId =~ clusterID
| project TimeGenerated, ClusterId, Namespace, ControllerName, Node = Computer, Pod = Name, ContainerInstance = ContainerName, ContainerID, ControllerKind = ControllerKind
| summarize arg_max(TimeGenerated, *) by Node, ContainerInstance
| project Namespace, ControllerName, Node, Pod, ContainerInstance, InstanceName = strcat(ClusterId, '/', ContainerInstance), ContainerID, ControllerKind, 
ContainerName = tostring(split(ContainerInstance, '/')[1]), LastPodInventoryTimeGenerated = TimeGenerated, ClusterId
| join kind=leftouter (LimitsTable) on Node, InstanceName
| project Namespace, ControllerName, Node, Pod, InstanceName, ContainerID, LimitsValue, ControllerKind, ContainerName, ContainerInstance, LastPodInventoryTimeGenerated, ClusterId;
let AggregationTable = CachedFilteredPerfTable
| where CounterName =~ metricUsageCounterName
| project TimeGenerated, Node, InstanceName, CounterValue
| summarize  Aggregation = percentile(CounterValue, 95) by Node, InstanceName 
| project Node, InstanceName, Aggregation;
MetaDataTable
| join kind= leftouter( AggregationTable ) on Node, InstanceName
| order by ContainerName asc, ContainerName
| extend ContainerIdentity = strcat(ContainerName, '|', Pod)
| extend percentage = Aggregation/LimitsValue * 100
| project ContainerIdentity, percentage, Aggregation, LimitsValue, Node, ControllerName, ControllerKind, ContainerID, ContainerInstance, InstanceName, Namespace, LastPodInventoryTimeGenerated, ClusterId
| where percentage > 80






#CPU
let metricUsageCounterName = 'cpuUsageNanoCores';
let metricLimitCounterName = 'cpuLimitNanoCores'; 
let clusterID = "/subscriptions/xxxxxxxxxxx";
let CachedFilteredPerfTable = Perf
| where ObjectName == 'K8SContainer'
| where InstanceName startswith clusterID
| project Node = Computer, TimeGenerated, CounterName, CounterValue, InstanceName;
let LimitsTable = CachedFilteredPerfTable
| where CounterName =~ metricLimitCounterName
| summarize arg_max(TimeGenerated, *) by Node, InstanceName
| project Node, InstanceName, LimitsValue = CounterValue/1000000, TimeGenerated;
let MetaDataTable = KubePodInventory
| where isnotempty(ClusterName) | where isnotempty(Namespace) | where isnotempty(Computer)
| where ClusterId =~ clusterID
| project TimeGenerated, ClusterId, Namespace, ControllerName, Node = Computer, Pod = Name, ContainerInstance = ContainerName, ContainerID, ControllerKind = ControllerKind
| summarize arg_max(TimeGenerated, *) by Node, ContainerInstance
| project Namespace, ControllerName, Node, Pod, ContainerInstance, InstanceName = strcat(ClusterId, '/', ContainerInstance), ContainerID, ControllerKind, 
ContainerName = tostring(split(ContainerInstance, '/')[1]), LastPodInventoryTimeGenerated = TimeGenerated, ClusterId
| join kind=leftouter (LimitsTable) on Node, InstanceName
| project Namespace, ControllerName, Node, Pod, InstanceName, ContainerID, LimitsValue, ControllerKind, ContainerName, ContainerInstance, LastPodInventoryTimeGenerated, ClusterId;
let AggregationTable = CachedFilteredPerfTable
| where CounterName =~ metricUsageCounterName
| project TimeGenerated, Node, InstanceName, CounterValue = CounterValue/1000000
| summarize  Aggregation = percentile(CounterValue, 95) by Node, InstanceName 
| project Node, InstanceName, Aggregation;
MetaDataTable
| join kind= leftouter( AggregationTable ) on Node, InstanceName
| order by ContainerName asc, ContainerName
| extend ContainerIdentity = strcat(ContainerName, '|', Pod)
| extend percentage = Aggregation/LimitsValue * 100
| project ContainerIdentity, percentage, Aggregation, LimitsValue, Node, ControllerName, ControllerKind, ContainerID, ContainerInstance, InstanceName, Namespace, LastPodInventoryTimeGenerated, ClusterId
| where percentage > 80

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

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

相关文章

Qwen1.5微调

引子 由于工作上需要,一直在用Qwen做大模型推理,有个再训练的需求,特此琢磨下Qwen的训练。OK,我们开始吧。 一、安装环境 查看显卡驱动版本 根据官网推荐 OK,docker在手,天下我有。 docker pull qwenll…

vuetify3.0+tailwindcss+vite最新框架

1、根据vuetify官网下载项目 安装vuetify项目 2、根据tailwindcss官网添加依赖 添加tailwindcss依赖 3、 配置main.ts // main.ts import "./style.css"4、使用 <template><h1 class"text-3xl font-bold underline">Hello world!</…

sscanf和scanf区别

sscandf 从字符串中提取数据 scanf 标准输入流读取数据 int num; sscanf("42", "%d", &num);float f; sscanf("3.14", "%f", &f);char str[20]; sscanf("Hello, World!", "%s", str);int a, b; sscanf(…

信息系统项目管理师论文考察范围预测

在2023年下半年实施机考之前&#xff0c;论文的范围还是比较好预测的&#xff0c;因为从历年考题来看&#xff0c;可以说十大管理领域考察的概率接近100%&#xff0c;而且有一定规律&#xff0c;比如说某个管理领域很久没考了&#xff0c;那么考察的概率就相对大一点&#xff0…

路由过滤与引入实验

一.实验要求及拓扑 二.实验思路 1.配置IP地址及环回 2.配置OSPF协议及RIP协议 3.OSPF和RIP进行路由引入 4.在R2上配置路由过滤&#xff0c;使RIP部分无法学到R4业务网段的信息 5.在R4上进行路由过滤&#xff08;地址前缀列表&#xff09;&#xff0c;使 R4 无法学习到 R1…

centos7服务器系统如何安装宋体字文件

centos7服务器系统如何安装宋体字文件&#xff01; 最近开发的积德寺app,菩提佛堂祈福平台网站发布后&#xff0c;由于服务器之前遇到了攻击&#xff0c;数据丢失了&#xff0c;重新安装了一遍系统centos7.发现客户的功德证书创建后&#xff0c;字体乱码了。很明显是缺少了宋体…

Linux 内核调试环境搭建

目录 QEMU Linux 0.11 源码 ​编辑 gdb 调试 学习Linux内核&#xff0c;我们可以看书&#xff0c;实际我们最好可以有一个可以调试的环境&#xff0c;本文就简单介绍一下使用Qemu 和gdb 来调试和查看Linux kernel 。在ubantu 20.04 的PC 上面编译内核源码&#xff0c;通过QE…

基于springboot+vue+Mysql的CSGO赛事管理系统

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

【点量云流】国内首家适配国产信创的实时云渲染解决方案,助力国产化信创新体验!

一、背景 随着信息技术的广泛应用&#xff0c;信息安全与自主可控成为国家发展的重要保障。近年来&#xff0c;国产化信创的发展&#xff0c;为推动信息技术产业自主创新&#xff0c;实现关键技术和产品的自主可控&#xff0c;对于保障国家信息安全、促进产业发展有着重要意义。…

Spectre-v2 以及 Linux Retpoline技术简介

文章目录 前言一、Executive Summary1.1 Spectre-v2: Branch Predictor Poisoning1.2 Mitigating Spectre-v2 with Retpolines1.3 Retpoline Concept 二、BackgroundExploit Composition 三、(Un-)Directing Speculative Execution四、Construction (x86)4.1 Speculation Barri…

递归神经网络(RNN)在AI去衣技术中的深度应用

在人工智能&#xff08;AI&#xff09;技术飞速发展的今天&#xff0c;图像处理和计算机视觉领域不断取得新的突破。其中&#xff0c;AI去衣技术作为一个具有挑战性的研究方向&#xff0c;引起了广大研究者和公众的关注。递归神经网络&#xff08;RNN&#xff09;作为深度学习的…

大模型-入门小知识

大模型是什么 大量参数&#xff08;上亿&#xff09;深度学习模型 人工只能包含机器学习&#xff0c;深度学习,深度学习包括大模型 单个神经元的计算模型&#xff1a; 大模型是怎么训练的 之前是算法&#xff08;神经网络&#xff09;----> 训练&#xff08;门槛降低&…

Win linux 下配置adb fastboot

一、Win配置adb & fastboot 环境变量 主机&#xff1a;Win10&#xff0c;除了adb fastboot需要设置变量之外&#xff0c;驱动直接安装即可 win下adb fastboot 下载地址&#xff1a;https://download.csdn.net/download/u012627628/89215420 win下qcom设备驱动下载地址&a…

C# winfrom窗体最小化任务栏托盘

一、添加notifyIcon控件 二、点击缩小按钮 三、添加notifyIcon双击还原事件 四、添加contextMenuStrip多任务菜单 五、将 contextMenuStrip绑定到notifyIcon控件 六、双击还原还原窗体 七、双击退出退出应用程序 一、添加notifyIcon控件 设置notifyIcon样式 Icon图标以…

k8s-pod 控制器

文章目录 k8s-pod 控制器无状态服务与有状态服务无状态服务pod 控制器ReplicationController(RC)ReplicaSet(RS)Label 和 Selector Deployment创建滚动更新回滚版本扩容/缩容暂停和恢复 StatefulSet创建扩容/缩容更新RollingUpdate->金丝雀发布OnDelete 删除 DaemonSet节点选…

2023中国便利店TOP100公示

转载来源&#xff1a;中国连锁经营协会

品牌差异化战略:Kompas.ai如何打造独特的内容声音

在当今竞争激烈的商业环境中&#xff0c;品牌差异化已成为企业获取市场优势的关键策略。一个鲜明的品牌形象和独特的内容声音不仅能够帮助企业吸引目标客户&#xff0c;还能够在消费者心中建立起独特的地位。本文将深入探讨品牌差异化的重要性&#xff0c;分析Kompas.ai如何帮助…

jsp实验11 JavaBean

二、实验项目内容&#xff08;实验题目&#xff09; 编写代码&#xff0c;掌握javabean的用法。【参考课本 上机实验 5.5.2 】 三、源代码以及执行结果截图&#xff1a; 源代码&#xff1a; Memory.java package sea.water; import java.util.ArrayList; import java.util…

代码随想录算法训练营第四十二天|01背包问题,416. 分割等和子集

背包问题 背包问题一般有以下几类&#xff1a; 掌握01背包和完全背包即可。 先理解01背包。完全背包可以看作是01背包问题的变形。 01背包 什么是01背包问题&#xff1f; 有n件物品和一个最多能背重量为w的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[…

使用Gitee进行社交登录的流程

使用Gitee进行社交登录 创建Gitee第三方应用流程&#xff1a; 鼠标移动到个人头像上&#xff0c;点击账号设置 点击账号设置&#xff0c;选择左边目录下数据管理的第三方应用 然后选择创建应用 根据要求填写 填写好了上面的要求之后&#xff0c;点击创建应用&#xff0c;这样&…