热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Rancher2.6全新Monitoring快速入门

rancher2,6,全新,monito

作者简介
万绍远,CNCF 基金会官方认证 Kubernetes CKA&CKS 工程师,云原生解决方案架构师。对 ceph、Openstack、Kubernetes、prometheus 技术和其他云原生相关技术有较深入的研究。参与设计并实施过多个金融、保险、制造业等多个行业 IaaS 和 PaaS 平台设计和应用云原生改造指导。

软件 版本
Rancher 2.6.4
Kubernetes 1.22.7+rke2r2

概 述

Rancher 2.6 监控启用方式与之前版本存在较大差异,属于原生的 Prometheus-Operator,通过抽象化一些 Kubernetes CRD 资源,可以更好地把监控告警功能整合起来,提高易用性。Prometheus-operator 包括以下 CRD 资源对象:

  • PrometheusRules:定义告警规则
  • Alert Managers:Altermanager 启动 CRD,用于 Altermanager 启动副本
  • Receivers:配置告警接收媒介 CRD
  • Routers:将告警规则和告警媒介进行匹配
  • ServiceMonitor:定义 Prometheus 采集的监控指标地址
  • Pod Monitor:更细粒化的对 POD 进行监控

配置使用

启用监控

切换到对应集群,选择左下角 clusterTools 启用 Prometheus:

在这里插入图片描述

部署到 System 项目中,勾选自定义 helm 参数:

根据实际需求修改部署要求:

如果需要对接远端存储(如 infuxdb),就需要修改 yaml 配置,并配置指向 influxdb:

remoteRead: - url: http://192.168.0.7:8086/api/v1/prom/read?db=prometheusremoteWrite: - url: http://192.168.0.7:8086/api/v1/prom/write?db=prometheus 

默认 node-exporter 资源 limit 配置较低,长时间运行后容易被 OOM KILL 掉,需要修改默认的内存限制为 150Mi:

 podLabels: jobLabel: node-exporter resources: limits: cpu: 200m memory: 150Mi requests: cpu: 100m memory: 30Mi 

可以点击如下页面进入对应的组件配置页面,如:

  • Altermanager:进入的是告警信息查看页
  • Grafana:查看监控数据图标
  • Prometheus Graph:Prometheus 表达式执行页
  • Prometheus Rules:查看 Prometheus 配置的告警表达式页
  • Prometheus Targets:监控采集数据采集

在集群概览页可以看见对应的指标监控项:

集群层面:

  • cpu 使用情况
  • 集群节点负载情况
  • 内存使用情况
  • 磁盘使用率
  • 磁盘 IO
  • Network Traffic
  • Network IO

Kubernetes 组件:

  • ApiServer 请求速率
  • Controller-Manager 队列深度
  • POD scheduler 调度状态
  • Ingress-Controller 连接数

ETCD 监控:

  • Leader 选举状态
  • Leader 选举次数
  • GRPC Client Traffic
  • ETCD 数据使用容量
  • Active Streams
  • RPC 速率
  • 磁盘数据同步时间

同时在每个部署的 POD 也都包含对应的监控项:

配置自定义监控指标

默认启用监控会会自动添加一些 ServiceMonitor 监控规则和 Prometheus Rules 告警规则,主要是针对平台组件监控和集群内节点状态监控和告警。

如果这些监控指标不满足你的需求,你可以手动添加。比如针对 java 应用的 jmx 监控,Jmx 有官方的 prometheus-export,我们只需要将其 jar 包下载让 java 应用程序加载 jar 包和加载其配置即可。

以一个应用为例,整体流程如下:

  • 利用 JMX exporter,在 Java 进程内启动一个小型的 Http server
  • 配置 Prometheus 抓取那个 Http server 提供的 metrics
  • 配置 Grafana 连接 Prometheus,配置 Dashboard

首先,需要创建文件夹:

mkdir -p /Dockerfile/jmx-exporter/ 

然后,下载 jmx-export.jar 包放到这个目录:

https://github.com/prometheus/jmx_exporter https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.12.0/jmx_prometheus_javaagent-0.12.0.jar 

随后,编写 jvm-export 配置文件放置/root/jmx-exporter/目录,创建 simple-config.yml 内容如下:

--- rules: - pattern: ".*" 

这里意思表示将全部监控信息抓取出来。将 jvm-export 集成到 tomcat 中,重新编写 Dockerfile:

FROM tomcat COPY ./jmx_prometheus_javaagent-0.12.0.jar /jmx_prometheus_javaagent-0.12.0.jar ENV CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.12.0.jar=6060:/jmx-exporter/simple-config.yml" 

重新 docker build,build 后执行以下 docker run 命令可以查看收集的监控指标,这里 6060 端口就是我们的 jmx-export 端口:

docker build -t tomcat:v1.0 . docker run -itd -p 8080:8080 -p 6060:6060 tomcat:v1.0 

访问查看:http://host_ip:6060

部署到 Rancher 平台:

给 Service 打上 label,用于 ServiceMonitor 关联:

kubectl label svc tomcat app=tomcat 

创建 ServiceMonitor:

apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: tomcat-app namespace: defaultspec: endpoints: - port: exporter selector: matchLabels: app: tomcat 

创建成功后通过 Prometheus 可以查看到对应的 Target:

对应的监控指标也已经抓取:

进入 grafana 页面添加 dashboard,默认账号密码为 admin/prom-operator:

添加 dashboard,输入 dashboard-id,8878,离线环境需要提前将 Dashboard 下载好,通过 json 方式导入:

配置告警

PrometheusRule 用于定义告警规则,默认已经包含针对平台组件和节点的一些告警策略。可以通过配置 Root 和 Receivers 配置告警媒介将对应告警通知到相应的人员。采用 Routing Tree 的告警结构能够快速的将告警进行分类,然后发送到指定的人员进行处理。

Receivers 配置告警媒介,例如填写 SMTP 地址和配置的账号/密码,默认接收的邮箱:

Routes 配置用于告警媒介和告警规则进行匹配,默认创建的 root 规则,用于匹配全部的告警规则,配置上对应创建的告警媒介:

在这里插入图片描述

此时全部的告警规则都会发送给配置的告警媒介,若要细分告警规则创建新的 Routes 通过 Label 与 Prometheus Rules 内对应的 Alter name 对接。

如匹配 alert:etcdNoLeader 这条告警规则:

在这里插入图片描述

也可以使用正则表达式匹配多个规则如:

Grouping 配置主要用于告警规则分类、抑制避免大量无用告警的干扰:

  • group_by:用于配置告警分组,达到告警抑制效果,同一个 group 的告警只会聚合到一起发送一次。例如 host01 上运行了数据库,那么对应的告警包含了 host down、mysql down。他们配置在一个 group 内,那么如果 host down 了对应的 mysql 肯定也是 down 了,那么因为他们配置在一个 group 中,所以 host down 和 mysql down 的告警会聚合到一起发送出去。
  • group_wait:新建的 AlterGroup 等待多久后触发第一次告警。
  • group_interval:AlterGroup 内产生的不同告警触发间隔时间。
  • repeat_interval:AlterGroup 内如果一直是同样的告警,Altermanager 为了避免长时间的干扰,进行告警去重的等待时间。

匹配后,告警触发,可以收到对应的告警邮件:

在这里插入图片描述

自定义告警

当默认的告警规则不能满足需求时,可以根据实际情况添加自定义告警,实际就是添加对应的 PrometheusRule。如以下例子,添加 pod 非 running 状态的告警。

UI 配置:

对应 yaml 配置:

apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: podmonitor namespace: cattle-monitoring-system spec: groups: - name: pod_node_ready rules: - alert: pod_not_ready annotations: message: '{ { $labels.namespace }}/{ { $labels.pod }} is not ready.' expr: 'sum by (namespace, pod) (kube_pod_status_phase{phase!~"Running|Succeeded"}) > 0 ' for: 180s labels: severity: 严重 
  • for:表示持续时间
  • message:表示告警通知内的信息
  • label.severity:表示告警级别
  • expr:指标获取表达式

配置告警接收者:

根据标签匹配到这个 PrometheusRule:

参考链接:
https://mp.weixin.qq.com/s/fT-AXnPP8rrWxTposbi-9A
https://github.com/prometheus-operator/prometheus-operator
https://rancher.com/docs/rancher/v2.6/en/monitoring-alerting/guides/enable-monitoring/


推荐阅读
  • FluxCD、ArgoCD或Jenkins X,哪个才是适合你的GitOps工具?
    GitOps是一种使用基于Git的工作流程来全面管理应用和基础设施的想法,其在最近获得了极大关注。新一代的部署工具更能说明这一点,它们将GitOps作为 ... [详细]
  • Envoy 流量分配策略优化
    在本研究中,我们对Envoy的流量分配策略进行了优化,旨在提高系统的稳定性和性能。实验环境包括一个前端代理服务(Envoy,IP地址为172.31.57.10)和五个后端服务。通过调整Envoy的配置,实现了更高效的流量分发和负载均衡,显著提升了整体系统的响应速度和可靠性。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
  • 在深入研究 React 项目的过程中,特别是在探索 react-router 源码时,我发现了其中蕴含的中间件概念。这激发了我对中间件的进一步思考与整理。本文将详细探讨 Redux 中间件的原理及其在实际项目中的应用,帮助读者更好地理解和使用这一强大工具。通过具体示例和代码解析,我们将揭示中间件如何提升应用的状态管理和异步操作处理能力。 ... [详细]
  • ROS主机与从机之间的通信原理及机制分析
    本文深入探讨了ROS(Robot Operating System)主机与从机之间的通信原理及机制。通过分析ROS网络架构,详细阐述了节点间的通信方式、消息传递流程以及数据同步机制。此外,还介绍了ROS中常用的通信模式,如发布/订阅、服务调用和参数服务器,为开发者提供了全面的技术指导。 ... [详细]
  • Egg.js 中间件详解与应用实例
    Egg.js 的中间件机制与 Koa 类似,均采用洋葱模型。每当开发一个中间件时,就像是在洋葱外增加了一层。本文将通过一个简单的中间件示例,详细介绍 Egg.js 中间件的编写方法及其应用场景,帮助读者更好地理解和使用这一功能。 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • prometheus09-k8s部署grafana
    1.部署grafana?apiVersion:?appsv1?kind:?StatefulSet?metadata:??name:?grafana??namespace:?kube-systemspec:??serviceName:?grafana??repl ... [详细]
  • 往期文章Prom ... [详细]
  • kubernetes官网关于nodelocaldns缓存的介绍 ... [详细]
  • Linux下安装grafana并且添加influxdb监控的方法
    这篇文章主要介绍了Linux下安装grafana并且添加influxdb监控的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值, ... [详细]
  • helm V3版本
    1、引入(1)之前方式部署应用基本过程*编写yaml文件**deployment**Service**Ingress(负载均衡、 ... [详细]
author-avatar
妩媚的谢染小妃
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有