KubernetesMonitoring

  • 监控集群中应用

  • 监控集群本身

    • Control-Plane Components(api-server,coredns,kube-scheduler)
    • Kubelet(cAdvisor)-暴露容器metrics
    • Kube-state-metrics-集群层面metrics(deployments,pods metrics)
    • Node-exporter-Host相关metrics(cpu,mem,network)

部署

  • helm是k8s的包管理工具

prometheus-operator
Install helm

$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh

Install Prometheus Chart

kube-prometheus-stack

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

Service Monitors

controlplane ~ ➜  kubectl get crd
NAME                                        CREATED AT
addons.k3s.cattle.io                        2024-08-15T00:00:11Z
helmcharts.helm.cattle.io                   2024-08-15T00:00:11Z
helmchartconfigs.helm.cattle.io             2024-08-15T00:00:11Z
traefikservices.traefik.containo.us         2024-08-15T00:01:07Z
ingressroutes.traefik.containo.us           2024-08-15T00:01:07Z
middlewaretcps.traefik.containo.us          2024-08-15T00:01:07Z
ingressrouteudps.traefik.containo.us        2024-08-15T00:01:07Z
serverstransports.traefik.containo.us       2024-08-15T00:01:07Z
tlsoptions.traefik.containo.us              2024-08-15T00:01:07Z
tlsstores.traefik.containo.us               2024-08-15T00:01:07Z
middlewares.traefik.containo.us             2024-08-15T00:01:07Z
ingressroutetcps.traefik.containo.us        2024-08-15T00:01:07Z
alertmanagerconfigs.monitoring.coreos.com   2024-08-15T09:10:15Z
alertmanagers.monitoring.coreos.com         2024-08-15T09:10:16Z
podmonitors.monitoring.coreos.com           2024-08-15T09:10:16Z
probes.monitoring.coreos.com                2024-08-15T09:10:16Z
prometheuses.monitoring.coreos.com          2024-08-15T09:10:16Z #创建prometheuses instance
prometheusrules.monitoring.coreos.com       2024-08-15T09:10:17Z
servicemonitors.monitoring.coreos.com       2024-08-15T09:10:17Z #添加targets用来让prometheus抓取
thanosrulers.monitoring.coreos.com          2024-08-15T09:10:17Z
  • Service monitors定义prometheus用于监控和抓取的targets集合
    Pod
# 创建一个持久化的rocky pod
kubectl run my-host --image=rockylinux/rockylinux --command -- /bin/bash -c "while true; do sleep 3600; done"
pod/my-host created
# 进入container
controlplane ~ ➜  kubectl exec my-host -it -- /bin/bash
[root@my-host /]# yum install wget -y
[root@my-host /]# wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
[root@my-host /]# tar -xzf node_exporter-1.8.2.linux-amd64.tar.gz 
[root@my-host /]# cd node_exporter-1.8.2.linux-amd64nohup ./node_exporter & 
# 后台启动nohup ./node_exporter# 测试
controlplane ~ ➜  kubectl get pod my-host -o wide
NAME      READY   STATUS    RESTARTS   AGE   IP           NODE           NOMINATED NODE   READINESS GATES
my-host   1/1     Running   0          13m   10.42.0.12   controlplane   <none>           <none>
# 尝试访问服务
controlplane ~ ✖ curl 10.42.0.12:9100
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Node Exporter</title><style>body {font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin: 0;
}
header {background-color: #e6522c;color: #fff;font-size: 1rem;padding: 1rem;
}
main {padding: 1rem;
}
label {display: inline-block;width: 0.5em;
}</style></head><body><header><h1>Node Exporter</h1></header><main><h2>Prometheus Node Exporter</h2><div>Version: (version=1.8.2, branch=HEAD, revision=f1e0e8360aa60b6cb5e5cc1560bed348fc2c1895)</div><div><ul><li><a href="/metrics">Metrics</a></li></ul></div></main></body>
</html>
controlplane ~ ➜  curl 10.42.0.12:9100/metrics 
···
# HELP process_virtual_memory_max_bytes Maximum amount of virtual memory available in bytes.
# TYPE process_virtual_memory_max_bytes gauge
process_virtual_memory_max_bytes 1.8446744073709552e+19
# HELP promhttp_metric_handler_errors_total Total number of internal errors encountered by the promhttp metric handler.
# TYPE promhttp_metric_handler_errors_total counter
promhttp_metric_handler_errors_total{cause="encoding"} 0
promhttp_metric_handler_errors_total{cause="gathering"} 0
···

创建Service

# 查看Prometheus instance配置
controlplane ~ ➜  kubectl get prometheuses.monitoring.coreos.com -o yaml 
apiVersion: v1
items:
- apiVersion: monitoring.coreos.com/v1kind: Prometheusmetadata:annotations:meta.helm.sh/release-name: prometheus-stackmeta.helm.sh/release-namespace: defaultcreationTimestamp: "2024-08-16T02:52:40Z"generation: 1labels:app: kube-prometheus-stack-prometheusapp.kubernetes.io/instance: prometheus-stackapp.kubernetes.io/managed-by: Helmapp.kubernetes.io/part-of: kube-prometheus-stackapp.kubernetes.io/version: 45.6.0chart: kube-prometheus-stack-45.6.0heritage: Helmrelease: prometheus-stackname: prometheus-stack-kube-prom-prometheusnamespace: defaultresourceVersion: "4393"uid: b1e782a0-c7d6-4f05-b5b3-20502623a9dfspec:alerting:alertmanagers:- apiVersion: v2name: prometheus-stack-kube-prom-alertmanagernamespace: defaultpathPrefix: /port: http-webenableAdminAPI: falseevaluationInterval: 30sexternalUrl: http://prometheus-stack-kube-prom-prometheus.default:9090hostNetwork: falseimage: quay.io/prometheus/prometheus:v2.42.0listenLocal: falselogFormat: logfmtlogLevel: infopaused: falsepodMonitorNamespaceSelector: {}podMonitorSelector:matchLabels:release: prometheus-stackportName: http-webprobeNamespaceSelector: {}probeSelector:matchLabels:release: prometheus-stackreplicas: 1retention: 10droutePrefix: /ruleNamespaceSelector: {}ruleSelector:matchLabels:release: prometheus-stack # 创建的rule包含这个标签,才能被prometheus instance发现scrapeInterval: 30ssecurityContext:fsGroup: 2000runAsGroup: 2000runAsNonRoot: truerunAsUser: 1000serviceAccountName: prometheus-stack-kube-prom-prometheusserviceMonitorNamespaceSelector: {}serviceMonitorSelector:matchLabels:release: prometheus-stack# 创建的serviceMonitor也要包含这个标签,才能被prometheus instance发现shards: 1version: v2.42.0walCompression: truestatus:availableReplicas: 1conditions:- lastTransitionTime: "2024-08-16T02:53:21Z"observedGeneration: 1status: "True"type: Available- lastTransitionTime: "2024-08-16T02:52:50Z"observedGeneration: 1status: "True"type: Reconciledpaused: falsereplicas: 1shardStatuses:- availableReplicas: 1replicas: 1shardID: "0"unavailableReplicas: 0updatedReplicas: 1unavailableReplicas: 0updatedReplicas: 1
kind: List
metadata:resourceVersion: ""
# 获取pod标签
controlplane ~ ➜  kubectl get pod my-host --show-labels NAME      READY   STATUS    RESTARTS   AGE   LABELS
my-host   1/1     Running   0          16m   run=my-host
#### svc.yml
apiVersion: v1
kind: Service
metadata:name: my-host-exporter-svclabels:job: my-host-exporterapp: my-host-exporter-svc
spec:selector:run: my-hostports:- name: exporterprotocol: TCPport: 9100targetPort: 9100
### 测试
controlplane ~ ➜  kubectl get svc my-host-exporter-svc 
NAME                   TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
my-host-exporter-svc   ClusterIP   10.43.32.68   <none>        9100/TCP   9s
controlplane ~ ✖ curl 10.43.32.68:9100
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Node Exporter</title><style>body {font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,Liberation Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;margin: 0;
}
header {background-color: #e6522c;color: #fff;font-size: 1rem;padding: 1rem;
}
main {padding: 1rem;
}
label {display: inline-block;width: 0.5em;
}</style></head><body><header><h1>Node Exporter</h1></header><main><h2>Prometheus Node Exporter</h2><div>Version: (version=1.8.2, branch=HEAD, revision=f1e0e8360aa60b6cb5e5cc1560bed348fc2c1895)</div><div><ul><li><a href="/metrics">Metrics</a></li></ul></div></main></body>
</html>      

ServiceMonitor Template

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:name: my-host-svc-monlabels:release: prometheus-stack  
spec:jobLabel: jobendpoints:- port: exporter # 同svcinterval: 30spath: /metrics # metrics路径selector:matchLabels:app: my-host-exporter-svc

创建之后发现我们定义的ServiceMonitor已经被prometheus instance发现并可以抓取metrics
在这里插入图片描述
我们也可以执行查询,对my-host Pod的一些指标进行观察
在这里插入图片描述

Rules

为了添加规则,Operator拥有一个prometheusrule
的CRD,用来向prometheus instance注册新规则

Template examples

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:labels:release: prometheus-stack  # 保证可以被prometheus instance找到并注册name: my-host-rules
spec:groups:- name: apirules:- alert: InstanceDownexpr: up == 0for: 5mlabels:severity: criticalannotations:summary: "Instance {{$labels.instance}} down"

在这里插入图片描述

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

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

相关文章

安防监控/视频汇聚平台EasyCVR如何配置,实现默认获取设备的子码流?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构&#xff0c;兼容性强、支持多协议接入&#xff0c;包括国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SD…

离线安装prometheus与Grafana实现可视化监控

简介 prometheus 是一个专为云环境设计的开源系统监控和警报工具&#xff0c;它收集并存储多维度的时间序列数据&#xff0c;通过PromQL查询语言提供强大的数据检索能力&#xff0c;并支持可视化及警报功能。而 Grafana 则是一个开源的数据可视化平台&#xff0c;能够与包括Pr…

基于Vue2使用x2js将JSON转换成XML、将XML转换成JSON

x2js源码地址GitHub - abdolence/x2js: x2js - XML to JSON and back for JavaScriptx2js - XML to JSON and back for JavaScript. Contribute to abdolence/x2js development by creating an account on GitHub.https://github.com/abdolence/x2js import x2js from x2js;//…

【RabbitMQ】SpringBoot整合RabbitMQ

对于RabbitMQ的开发,Spring方法提供了更为方便的操作. Spring官网介绍: Spring AMQP RabbitMQ官网介绍: RabbitMQ tutorial - "Hello World!" | RabbitMQ 引入依赖 为了方便测试也引入SpringWeb依赖. <dependencies><dependency><groupId>org.s…

三级_网络技术_18_路由器的配置及使用

1.在Cisco路由器上用于永久保存路由器的开机诊断程序、引导程序和操作系统软件的存储器是()。 Flash NVRAM RAM ROM 2.在Cisco路由器中主要用来永久保存路由器的开机诊断程序、引导程序和操作系统&#xff0c;以完成路由器初始化进程的存储器是()。 RAM Disk Flash RO…

[Spring] Spring事务与事务的传播

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

零基础学习大模型

揭秘大模型智能背后的神秘力量 前言 在这个信息爆炸的时代&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面。其中&#xff0c;大模型&#xff08;LLM&#xff09;以其强大的语言处理能力和广泛的应用场景&#xff0c;成为了AI领域的一颗璀璨明珠…

Qt 使用阿里矢量图标库

前言 阿里矢量图标库非常好用&#xff0c;里面有各种丰富的图标&#xff0c;完全免费&#xff0c;还支持自定义图标&#xff0c;还可以将图标打包到一个项目中&#xff0c;使用起来非常方便。 第一步&#xff1a; 打开阿里矢量图标库 第二步&#xff1a; 搜索图标&#x…

pcl-滤波模块

点云需要滤波的原因 点云数据密度不规则需要平滑因为遮挡等问题造成离群点需要去除大量数据需要下采样噪音数据需要去除 1.直通滤波 对指定的某一维度实行简单的滤波&#xff0c;就是类似于2D处理中的画ROI&#xff0c;此滤波可以将x&#xff08;y和z&#xff09;在某一范围…

Datawhale X 魔搭 AI夏令营第四期 魔搭-AIGC方向 task03笔记

Datawhale官方的Task3链接&#xff1a;Task03 往期Task1、Task2链接&#xff1a;Task01&#xff0c; Task02 【学习者手册】&#xff1a;链接直达 【QA文档】&#xff1a;链接直达 【赛事官网】&#xff1a;链接直达 ComfyUI ComfyUI是一个基于深度学习的图像生成软件&…

【Linux操作系统】进程概念

目录 一、进程概念1.1 什么是进程 二、task_struct内容分类2.1 标识符2.2 进程状态2.2.1 进程排队2.2.2 关于进程状态的表述——运行、阻塞、挂起2.2.3 Linux中具体的进程状态2.2.4 孤儿进程 2.3 进程优先级 三、Linux的调度与切换3.1 进程切换3.2 进程调度 四、环境变量4.1 ma…

【Redis】Redis 数据类型与结构—(二)

Redis 数据类型与结构 一、值的数据类型二、键值对数据结构三、集合数据操作效率 一、值的数据类型 Redis “快”取决于两方面&#xff0c;一方面&#xff0c;它是内存数据库&#xff0c;另一方面&#xff0c;则是高效的数据结构。 Redis 键值对中值的数据类型&#xff0c;也…

C++练习备忘录

1. 保留两位小数输出格式 #include <iostream> #include <iomanip> using namespace std; int main() {double S 0;S (15 25) * 20 / 2;cout << fixed << setprecision(2) << S;return 0; }2. 设置输出宽度 #include <iostream> #inclu…

自研低代码海报制作平台学习分享计划

vue3组件库开发前面咱卷完了JuanTree组件&#xff0c;接下来一起来卷vue3低代码海报制作平台的基础组件实现。首先是拖拽基础组件的开发&#xff0c;整好把前面学习的知识点再运用进来。 文章目录 效果演示基本拖拽区域拖拽旋转其他效果待实现 录屏说明 看一步步实现的效果&…

【鸿蒙学习】HarmonyOS应用开发者基础 - 构建更加丰富的页面(一)

学完时间&#xff1a;2024年8月14日 一、前言叨叨 学习HarmonyOS的第六课&#xff0c;人数又成功的降了500名左右&#xff0c;到了3575人了。 二、ArkWeb 1、概念介绍 ArkWeb是用于应用程序中显示Web页面内容的Web组件&#xff0c;为开发者提供页面加载、页面交互、页面调…

python实现每天定时发送邮件

文章目录 步骤 1: 安装所需的库步骤 2: 编写发送电子邮件的 Python 脚本步骤 3: 配置电子邮件发送服务步骤 4: 运行脚本进一步扩展 要编写一个用于自动发送每日电子邮件报告的 Python 脚本&#xff0c;并配置它在每天的特定时间发送电子邮件&#xff0c;使用 smtplib 和 emai…

java基础进阶——log日志、类加载器、XML、单元测试、注解、枚举类

前言 这篇内容主要掌握的就是logback使用、理解类加载器、XML文件的编写&#xff0c;XML文档约束schema&#xff0c;用Dom4j解析XML文档&#xff0c;Xpath检索XML文档&#xff0c;完整使用Junit单元测试框架常用部分&#xff0c;注解的定义和使用&#xff0c;枚举类的定义和开发…

二叉树(二)

一、二叉树的顺序结构 普通的二叉树是不适合用数组来存储的&#xff0c;因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆&#xff08;一种二叉树&#xff09;使用顺序结构的数组来存储&#xff0c;需要注意的是这里的堆和操作系统虚拟…

Self-Supervised Learning(李宏毅老师系列)

自学参考&#xff1a; BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding BERT 论文逐段精读 视频课 课件资料 笔记 一、概述 自监督学习模型与芝麻街~ 参数量 ELMO&#xff1a;94MBERT&#xff1a;340MGPT-2&#xff1a;1542MMegatron&…

ubuntu查看CPU、内存、硬盘

1、查看CPU cat /proc/cpuinfo 我这台机器CPU是2核&#xff0c;所以这里是2核 或者使用如下命令也可以查看 lscpu 查看CPU使用率 top 2、查看内存 查看内存信息&#xff1a; free -h 查看内存使用情况&#xff1a; vmstat 3、硬盘 查看硬盘使用情况&#xff1a; df -…