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

这篇具有很好参考价值的文章主要介绍了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

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

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

解决该问题后继续:

kubectl create ns monitoring

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

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

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

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

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 集群中的资源进行交互非常有用。它可以方便地将远程服务映射到本地主机,以便你可以直接访问和测试它们。

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

访问 http://localhost:9090/

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

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

K8s环境下监控告警平台搭建及配置,后端
up指标
K8s环境下监控告警平台搭建及配置,后端
node_load1指标

No datapoints found. , issue[3]

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

但好像没干啥就好了..

K8s环境下监控告警平台搭建及配置,后端
查询对promethues web总的成功请求数
K8s环境下监控告警平台搭建及配置,后端
查询对promethues metrics端点的成功请求率
K8s环境下监控告警平台搭建及配置,后端

告警信息

http://localhost:9090/alerts

K8s环境下监控告警平台搭建及配置,后端
配置信息Configuration
K8s环境下监控告警平台搭建及配置,后端
告警(alert)和聚合(record)规则Rules
K8s环境下监控告警平台搭建及配置,后端
监控目标Targets
K8s环境下监控告警平台搭建及配置,后端



访问Alertmanger UI


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

K8s环境下监控告警平台搭建及配置,后端
告警信息
K8s环境下监控告警平台搭建及配置,后端
状态和配置
K8s环境下监控告警平台搭建及配置,后端



访问Grafana UI


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

http://localhost:3000/

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

user: admin

pass: prom-operator

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

Nodes节点监控

在上图搜索框输入"node"

K8s环境下监控告警平台搭建及配置,后端
K8s/Compute Resources/Cluster监控
K8s环境下监控告警平台搭建及配置,后端
K8s环境下监控告警平台搭建及配置,后端
K8s/Compute Resources/Pod监控
K8s环境下监控告警平台搭建及配置,后端



定制Alertmanager邮件通知


安装FakeSMTP


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

mvn package

java -jar target/fakeSMTP-2.0-SNAPSHOT.jar -p 2525
K8s环境下监控告警平台搭建及配置,后端

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

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

点击 启动服务器

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

Alertmanager缺省配置(Secret)


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

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

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

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


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

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

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

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

Alertmanager缺省配置(UI)


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

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

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

修改ip为本机地址


更新prometheus-operator release


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

helm history prometheus-operator -n monitoring

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

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

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


校验配置更新成功


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

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

启动FakeSMTP接收告警


此时已经收到了邮件

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

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

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

.+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 多平台发布文章来源地址https://www.toymoban.com/news/detail-648100.html

到了这里,关于K8s环境下监控告警平台搭建及配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Prometheus接入AlterManager配置企业微信告警(基于K8S环境部署)

    注意:请基于 Prometheus+Grafana监控K8S集群(基于K8S环境部署)文章之上做本次实验。 1、创建企业微信机器人 点击登入企业微信网页版: 应用管理 机器人 创建应用 创建好之后如上图,我们获取 点击查看获取 Secret 值。 2、获取企业ID 1、创建AlterManager ConfigMap资源清单 执行YAML资源

    2024年02月04日
    浏览(38)
  • prometheus监控k8s服务并告警到钉钉

    一、监控k8s集群 要监控k8s集群需要使用到以下服务用于收集监控的资源信息,node_exporter用于监控k8s集群节点的资源信息,kube-state-metrics用于监控k8s集群的deployment、statefulset、daemonset、pod等的状态,cadvisor用于监控k8s集群的pod资源信息 在k8s集群中创建monitoring的命名空间用于部

    2024年02月13日
    浏览(41)
  • K8s集群nginx-ingress监控告警最佳实践

    本文分享自华为云社区《K8s集群nginx-ingress监控告警最佳实践》,作者:可以交个朋友。 nginx-ingress作为K8s集群中的关键组成部分。主要负责k8s集群中的服务发布,请求转发等功能。如果在访问服务过程中出现404和502等情况,需要引起注意。 可以通过CCE集群插件kube-prometheus-s

    2024年04月22日
    浏览(29)
  • k8s--基础--26.6--监控告警系统--kube-state-metrics

    kube-state-metrics 会监听API Server生成有关资源对象的状态指标,比如Deployment、Node、Pod。 kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,我们可以使用Prometheus来抓取这些数据然后存储。 指标数据 Deployment、Pod、副本状态等 调度了多少个replicas 现在可用

    2023年04月08日
    浏览(39)
  • 全平台通用使用 kind 快速搭建 k8s 开发环境,坑已踩(无坑版)

    博客原文 Kind (Kubernetes in Docker) 是一个 Kubernetes 孵化项目, Kind 是一套开箱即用的 Kubernetes 环境搭建方案。顾名思义,就是将 Kubernetes 所需要的所有组件,全部部署在一个 Docker 容器中,可以很方便的搭建 Kubernetes 集群。 Kind 已经广泛的应用于 Kubernetes 上游及相关项目的

    2024年01月25日
    浏览(30)
  • k8s搭建(一、环境配置与docker安装)

    天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 k8s搭建文章: k8s搭建(一、k8s环境配置与docker安装) k8s搭建(二、k8s组件安装) k8s搭

    2024年02月21日
    浏览(40)
  • 从零在单机上搭建k8s ,kubeflow1.7机器学习平台(国内环境)

    kubeflow是在k8s之上搭建的机器学习平台,涵盖了机器学习的开发、训练、优化、部署、管理阶段。由于我是在单机上进行的,故k8s环境是基于kind来进行快速搭建。Kind 是一个通过使用 docker 容器模拟节点来创建本地 k8s 集群的工具。综上,不难看出,kubeflow依赖于k8s,kind创建的

    2024年02月03日
    浏览(34)
  • Kubernetes实战(二十三)-k8s event监控利器kube-eventer对接企微告警

    监控是保障系统稳定性的重要组成部分,在Kubernetes开源生态中,资源类的监控工具与组件监控比较多。 cAdvisor:kubelet内置的cAdvisor,监控容器资源,如容器cpu、内存; Kube-state-metrics:kube-state-metrics通过监听 API Server 生成有关资源对象的状态指标,主要关注元数据,比如 Dep

    2024年02月21日
    浏览(32)
  • Prometheus+Grafana监控K8S集群(基于K8S环境部署)

    1、服务器及K8S版本信息: IP地址 主机名称 角色 K8S版本 16.32.15.200 master-1 Master节点 v1.23.0 16.32.15.201 node-1 Node节点 v1.23.0 16.32.15.202 node-2 Node节点 v1.23.0 2、部署组件版本: 序号 名称 版本 作用 1 Prometheus v2.33.5 收集、存储和处理指标数据 2 Node_exporter v0.16.0 采集服务器指标,如CP

    2024年02月04日
    浏览(57)
  • 后端SpringBoot应用向云原生K8S平台迁移

    传统后端Java Spring单体架构在向微服务架构升级的过程中,我们引入了Spring Cloud(Netflex、Alibaba等)框架,Spring Cloud帮我们解决了分布式服务的注册发现、服务的动态配置等等。以目前国内比较流行的Spring Cloud Alibaba为例,我们需要在我们的代码中集成Spring Cloud Alibaba的相关依

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包