K8s环境下监控告警平台搭建及配置

Promethues是可以单机搭建的,参考prometheus入门[1]

本文是就Promethues+Grafana在K8s环境下的搭建及配置


Prometheus度量指标监控平台简介


  • 启动minikube minikube start

  • 安装helm

使用Helm Chart 安装 Prometheus Operator:

helm install prometheus-operator stable/prometheus-operator -n monitoring

报错:

WARNING: This chart is deprecated
Error: INSTALLATION FAILED: failed to install CRD crds/crd-alertmanager.yaml: resource mapping not found for name: "alertmanagers.monitoring.coreos.com" namespace: "" from "": no matches for kind "CustomResourceDefinition" in version "apiextensions.k8s.io/v1beta1"
ensure CRDs are installed first

根据 Kubernetes和微服务监控体系[2](搜索"降低我们的版本")

降低minikube版本: minikube start --kubernetes-version=v1.20.3

(这步可能会卡着不动等半天,耐心等待即可~)

alt
alt

解决该问题后继续:

kubectl create ns monitoring

helm install prometheus-operator stable/prometheus-operator -n monitoring

alt
alt

要等一会儿,全部pod才能都启动起来~

alt

Promethues-Operator基本功能展示


访问prometheus内置浏览器


kubectl port-forward -n monitoring prometheus-prometheus-operator-prometheus-0 9090

kubectl port-forward 什么意思?

kubectl port-forward 是一个 Kubernetes 命令,用于将本地端口与 Kubernetes Pod 或 Service 的端口之间建立临时的网络转发连接。

当你在本地开发环境中需要直接访问运行在 Kubernetes 集群中的 Pod 或 Service 时,kubectl port-forward 命令可以帮助你在本地主机和 Kubernetes 集群之间建立一个网络通道。

使用 kubectl port-forward 命令时,你需要指定要转发的资源类型和名称,并指定本地端口和远程端口。例如,以下命令将本地的 8080 端口与名为 "my-pod" 的 Pod 的 80 端口进行转发:

kubectl port-forward my-pod 8080:80

这将在本地主机的 8080 端口上启动一个转发服务,将所有发送到该端口的请求转发到运行在 "my-pod" Pod 中的 80 端口。你可以使用本地浏览器或工具访问 localhost:8080 来与 Pod 进行交互。

类似地,你也可以使用 kubectl port-forward 命令转发到 Service 的端口。例如:

kubectl port-forward service/my-service 8080:80

这将将本地的 8080 端口与名为 "my-service" 的 Service 的 80 端口进行转发。

kubectl port-forward 命令对于在本地开发和调试过程中与 Kubernetes 集群中的资源进行交互非常有用。它可以方便地将远程服务映射到本地主机,以便你可以直接访问和测试它们。

alt

访问 http://localhost:9090/

alt

prometheus-operator 已经帮我们把相关的监控项配置好了

alt

up指标

alt

node_load1指标

No datapoints found. , issue[3]

alt

但好像没干啥就好了..

alt

查询对promethues web总的成功请求数

alt

查询对promethues metrics端点的成功请求率

alt

告警信息

http://localhost:9090/alerts

alt

配置信息Configuration

alt

告警(alert)和聚合(record)规则Rules

alt

监控目标Targets

alt



访问Alertmanger UI


kubectl port-forward -n monitoring alertmanager-prometheus-operator-alertmanager-0 9093

alt

告警信息

alt

状态和配置

alt



访问Grafana UI


alt

http://localhost:3000/

alt

user: admin

pass: prom-operator

alt
alt

Nodes节点监控

在上图搜索框输入"node"

alt

K8s/Compute Resources/Cluster监控

alt
alt

K8s/Compute Resources/Pod监控

alt



定制Alertmanager邮件通知


安装FakeSMTP


git clone https://github.com/Nilhcem/FakeSMTP.git
cd FakeSMTP

mvn package

java -jar target/fakeSMTP-2.0-SNAPSHOT.jar -p 2525
alt

现在需要改为 java -jar target/fakeSMTP-2.1-SNAPSHOT.jar -p 2525

alt

点击 启动服务器

alt

Alertmanager缺省配置(Secret)


kubectl get secret -n monitoring alertmanager-prometheus-operator-alertmanager -o go-template='左括号 左括号 index .data "alertmanager.yaml" 右括号 右括号' | base64 --decode (把汉字替换为对应符号,不这样hexo会解析出错)

alt

该命令用于从 Kubernetes 集群中的指定命名空间(-n monitoring)获取名为 alertmanager-prometheus-operator-alertmanager 的 Secret 对象,并提取其中名为 alertmanager.yaml 的数据字段的值。然后使用 base64 命令对该值进行解码,以便将其转换回原始的 YAML 格式。

换句话说,这个命令的目的是获取监控系统中 Alertmanager 的配置文件,并将其解码为可读的 YAML 格式,以便查看其中的配置详细信息。


因为这个配置是secret形式存储的

alt

Opaque类型,所以最后要用 base64 --decode 转为明文

其实可以通过下面的UI直观查看

Alertmanager缺省配置(UI)


alt

Alertmanager config更新


参考 https://github.com/helm/charts/blob/master/stable/prometheus-operator/values.yaml#L133

  • 增加 邮件smtp等配置
  • 增加静默配置(发送给null)
  • 增加抑制配置(inhibit)

Prometheus监控系统中,"静默配置"(inhibit configuration)用于在发生警报时控制通知的行为。通过静默配置,可以防止某些特定警报触发通知,以避免不必要的干扰或重复的通知。

静默配置定义了在特定条件下阻止警报通知的规则。这些规则通常基于警报标签和标签值的匹配。当触发一个警报时,系统将根据静默配置中的规则检查是否有匹配的规则存在。如果有匹配的规则,那么该警报将被静默,即不会触发通知。

通过使用静默配置,可以灵活地控制在某些情况下抑制警报通知,例如:

  • 阻止在维护窗口期间触发通知。
  • 抑制由特定部署环境引起的虚假警报。
  • 防止多个相关的警报同时触发大量通知。

在Prometheus中,静默配置可以通过修改Alertmanager的配置文件(alertmanager.yaml)来实现,具体的配置语法和规则定义可以参考Prometheus的官方文档。


在Prometheus中,将通知发送给null属于静默配置的一种。当将静默规则配置为将通知发送给null时,实际上是将该警报完全静默化,意味着不会有任何通知发送。

这种配置适用于那些不希望触发任何通知的警报。通常,这可能是对特定类型的警报或某些特定条件下的警报进行静默化的一种方式。通过将通知发送给null,可以确保该警报不会引起任何干扰或通知负担。

静默规则配置示例:

inhibit_rules:
  - source_match:
      severity: critical
    target_match:
      severity: warning
    equal: ['alertname', 'service']
    target_receivers:
      - 'null'

上述示例中的静默规则指定了在警报的严重性为critical,并且警报名称和服务名称相同时,将通知发送给null,即静默该警报。

更新后的配置在 https://github.com/spring2go/k8s-msa-in-action/blob/master/ch08/07/values_alertmanager.yml

alt

修改ip为本机地址


更新prometheus-operator release


helm upgrade prometheus-operator stable/prometheus-operator --values=shuang_alertmanager.yml -n monitoring

helm history prometheus-operator -n monitoring

alt

如果有问题,可以看pod日志进行排查~

kubectl logs -n monitoring alertmanager-prometheus-operator-alertmanager-0


校验配置更新成功


打开 http://localhost:9093/#/status, 通过UI校验看是否修改成功~

alt

启动FakeSMTP接收告警


此时已经收到了邮件

alt

其中 etcd这项告警 message = etcd cluster "kube-etcd": members are down (1).是因为用minikube,etcd节点本来就不足~

alt

.+Overcommit本来应该要收到告警,但通过配置抑制掉了




参考自

Kubernetes和微服务监控体系[4]

Kubernetes和微服务监控体系[5]

更多参考:

从零用Helm部署prometheus,并配置钉钉告警[6]

helm 安装配置 prom-operator[7]

参考资料

[1]

prometheus入门: https://dashen.tech/2020/09/14/prometheus%E5%85%A5%E9%97%A8/

[2]

Kubernetes和微服务监控体系: https://blog.csdn.net/weixin_35821291/article/details/122877311

[3]

issue: https://github.com/prometheus/prometheus/issues/1022

[4]

Kubernetes和微服务监控体系: https://www.bilibili.com/video/BV1Qi4y1b79r/?p=8

[5]

Kubernetes和微服务监控体系: https://blog.csdn.net/weixin_35821291/article/details/122877311

[6]

从零用Helm部署prometheus,并配置钉钉告警: https://blog.csdn.net/lingjinghe/article/details/127646375

[7]

helm 安装配置 prom-operator: https://blog.csdn.net/zhangxueleishamo/article/details/130339221

本文由 mdnice 多平台发布

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

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

相关文章

flask-migrate使用

1.介绍 # 表,字段发生变化,都会有记录,自动同步到数据库中--》django支持这种操作 # 原生的sqlalchemy,不支持修改表的 # flask-migrate可以实现类似于django的 python manage.py makemigrations #记录 python manage.py migrate …

本地跑Mapreduce程序的相关配置

本地跑MapReduce程序需要配置的代码 为了在本地运行MapReduce程序,需要加如下的东西 在项目中创建一个如图所示的包:org.apache.hadoop.io.nativeio,并在该包下面创建一个名为:NativeIO的类(注意:名字不能…

黑马程序员Vue全套视频

Vue 2 创建vue实例 示例: <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><script src"https://cdn.jsdelivr.net/npm/vue2.…

液体神经网络:LNN是个啥概念?

一、说明 在在人工智能领域&#xff0c;神经网络已被证明是解决复杂问题的非常强大的工具。多年来&#xff0c;研究人员不断寻求创新方法来提高其性能并扩展其能力。其中一种方法是液体神经网络&#xff08;LNN&#xff09;的概念&#xff0c;这是一个利用动态计算功能的迷人框…

Field Symbol与数据引用的几个应用

这俩货都是指针。在动态编程里用。 但是从好理解的角度来看&#xff0c;都给他们理解成数据对象。 都得指向其他的数据对象。不过field symbol指的是其他的数据对象内存地址的值。而数据引用只是指向内存地址。 1.Field symbol 当Field Symbol指向了其他的数据对象&#xf…

【实操干货】如何开始用Qt Widgets编程?(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 在本文中&#xff0…

解决: git拉取报错 git 未能顺利结束 (退出码 1)

拉取代码失败信息 解决方法: 执行一下"git push -f origin master"命令即可 步骤: 1.项目文件夹右击选择"Git Bash Here",打开命令窗口 2. 输入"git push -f origin master"后,回画 执行结束 3.再拉取代码,成功

pytest结合 allure 打标记之的详细使用

前言 前面我们提到使用allure 可以生成漂亮的测试报告&#xff0c;下面就Allure 标记我们做详细介绍。 allure 标记 包含&#xff1a;epic&#xff0c;feature, story, title, testcase, issue, description, step, serverity, link, attachment 常用的标记 allure.feature…

20230807通过ffmpeg将DTS编码的AUDIO音频转换为AAC编码

20230807通过ffmpeg将DTS编码的AUDIO音频转换为AAC编码 2023/8/7 20:04 ffmpeg dts 转AAC 缘起&#xff1a;由于网上找的电影没有中文字幕&#xff0c;有内置的英文字幕&#xff0c;但是还是通过剪映/RP2023识别一份英文字幕备用&#xff01; I:\Downloads\2005[红眼航班]Red E…

数据结构 | 利用二叉堆实现优先级队列

目录 一、二叉堆的操作 二、二叉堆的实现 2.1 结构属性 2.2 堆的有序性 2.3 堆操作 队列有一个重要的变体&#xff0c;叫作优先级队列。和队列一样&#xff0c;优先级队列从头部移除元素&#xff0c;不过元素的逻辑顺序是由优先级决定的。优先级最高的元素在最前&#xff…

PHP最简单自定义自己的框架控制器自动加载运行(四)

1、实现效果调用控制中方法 2、创建控制器indexCrl.php <?php class indexCrl{public function index(){echo 当前index控制器index方法;} } 3、KJ.php字段加载控制器文件 public static function run(){//定义常量self::_set_const();//创建模块目录self::_mk_module();…

finfet grid

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 90nm 及以下的工艺都要求储存器&#xff0c;IP&#xff0c;IO 的多晶硅方向必须和标准单元的多晶 硅方向保持一致&#xff0c;无法像过去工艺一样随意旋转方向。在 22nm 及以下…

C++初阶语法——类型指示符auto和空指针nullptr

前言&#xff1a;本篇文章的重点 1.C中的类型指示符auto 2.借由auto实现的范围for 3.C为什么要创建nullptr而不是用原本的NULL。 目录 一.auto1.auto的含义及使用2.auto使用注意事项3.范围for&#xff08;重头戏&#xff09;范围for注意事项 二.nullptr 一.auto 1.auto的含义及…

【css】添加待小三角的提示框

如需创建在工具提示的指定侧面显示的箭头&#xff0c;在工具提示后添加“空的”内容&#xff0c;并使用伪元素类 ::after 和 content 属性。箭头本身是使用边框创建的。这会使工具提示看起来像气泡。 代码&#xff1a; <style> .tooltip {position: relative;display: …

【选择排序】直接选择排序 与 堆排序

目录 1. 排序的概念&#xff1a; 2.选择排序的基本思想 3.直接选择排序 4.堆排序 1. 排序的概念&#xff1a; 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xf…

STM32 F103C8T6学习笔记4:时钟树、滴答计时器、定时器定时中断

今日理解一下STM32F103 C8T6的时钟与时钟系统、滴答计时器、定时器计时中断的配置&#xff0c;文章提供原理&#xff0c;代码&#xff0c;测试工程下载。 目录 时钟树与时钟系统&#xff1a; 滴答计时器&#xff1a; 定时器计时中断&#xff1a; 测试结果&#xff1a; 测…

机器学习、深度学习项目开发业务数据场景梳理汇总记录五

本文的主要作用是对历史项目开发过程中接触到的业务数据进行整体的汇总梳理&#xff0c;文章会随着项目的开发推进不断更新。 这里是续文&#xff0c;因为CSDN单篇文章内容太大的话就会崩溃的&#xff0c;别问我怎么知道的&#xff0c;问就是血泪教训&#xff0c;辛辛苦苦写了一…

Vue [Day6]

路由进阶 路由模块的封装抽离 src/router/index.js import VueRouter from vue-router // 用绝对路径的方式来写目录 相当于src import Find from /views/Find import Friend from ../views/Friend import My from ../views/Myimport Vue from vue Vue.use(VueRouter)con…

2023年加湿器市场数据分析(天猫数据分析怎么做)

随着人们生活水平提高、空调广泛使用&#xff0c;导致皮肤紧绷、口舌干燥、咳嗽感冒等空调病的滋生。可以看出&#xff0c;空气湿度与人体健康以及日常生活有着密切的联系。而加湿器作为室内空气湿度控制的重要工具&#xff0c;在近年来受到了越来越多的重视。根据鲸参谋电商数…

Godot 4 源码分析 - 文件读入编码处理

今天需要读入xml文件进行处理&#xff0c;结果读入一个带中文的文件时&#xff0c;出错了。当然程序还能运行&#xff0c;但编译器一直报错&#xff0c;而且XML解析也不正确 单步调试发现读入的内容出现乱码&#xff0c;具体逻辑&#xff1a; String FileAccess::get_as_text…