当前位置: 首页 > article >正文

Kubernetes 监控与可观测性深度解析:Prometheus + Grafana + Loki

Kubernetes 监控与可观测性深度解析Prometheus Grafana Loki引言在云原生环境中监控与可观测性是保障系统稳定运行的关键。Kubernetes 生态提供了丰富的监控工具其中 Prometheus、Grafana 和 Loki 组成了完整的可观测性栈。本文将深入探讨如何构建 Kubernetes 集群的监控体系。可观测性基础概念可观测性的三个支柱支柱说明工具指标Metrics数值化的性能数据Prometheus日志Logs事件记录Loki, ELK追踪Tracing分布式请求追踪Jaeger, Zipkin监控架构┌─────────────────────────────────────────────────────────────────┐ │ 数据收集层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Node │ │ Pod │ │ Service │ │ Custom │ │ │ │ Exporter │ │ Exporter │ │ Exporter │ │ Exporter │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 数据存储层 │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Prometheus │ │ │ │ - 时序数据库 │ │ │ │ - PromQL 查询语言 │ │ │ └──────────────────────────────────────────────────────────┘ │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Loki │ │ │ │ - 日志存储 │ │ │ │ - LogQL 查询语言 │ │ │ └──────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ 可视化层 │ │ ┌──────────────────────────────────────────────────────────┐ │ │ │ Grafana │ │ │ │ - 仪表板 │ │ │ │ - 告警管理 │ │ │ └──────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘Prometheus 安装与配置使用 Helm 安装# 添加 Prometheus Helm 仓库 helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update # 创建命名空间 kubectl create namespace monitoring # 安装 Prometheus helm install prometheus prometheus-community/prometheus -n monitoring验证安装# 检查 Pod 状态 kubectl get pods -n monitoring # 检查服务状态 kubectl get svc -n monitoringPrometheus 配置apiVersion: v1 kind: ConfigMap metadata: name: prometheus-config namespace: monitoring data: prometheus.yml: | global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: kubernetes-apiservers kubernetes_sd_configs: - role: endpoints scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token - job_name: kubernetes-nodes kubernetes_sd_configs: - role: node scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/tokenServiceMonitor 配置监控 Kubernetes 组件apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: kube-apiserver namespace: monitoring spec: selector: matchLabels: component: apiserver provider: kubernetes endpoints: - port: https interval: 30s scheme: https tlsConfig: caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt serverName: kubernetes bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token监控自定义应用apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: my-app-monitor namespace: monitoring spec: selector: matchLabels: app: my-app endpoints: - port: http interval: 30s path: /metricsGrafana 配置安装 Grafana# 添加 Grafana Helm 仓库 helm repo add grafana https://grafana.github.io/helm-charts helm repo update # 安装 Grafana helm install grafana grafana/grafana -n monitoring配置数据源apiVersion: v1 kind: ConfigMap metadata: name: grafana-datasources namespace: monitoring data: datasources.yaml: | apiVersion: 1 datasources: - name: Prometheus type: prometheus url: http://prometheus-server.monitoring.svc.cluster.local access: proxy isDefault: true - name: Loki type: loki url: http://loki.monitoring.svc.cluster.local创建仪表板apiVersion: v1 kind: ConfigMap metadata: name: grafana-dashboards namespace: monitoring data: kubernetes.json: | { title: Kubernetes Cluster Dashboard, panels: [ { type: graph, title: Cluster CPU Usage, targets: [ { expr: sum(node_cpu_seconds_total), legendFormat: Total CPU } ] } ] }Loki 日志管理安装 Loki# 添加 Loki Helm 仓库 helm repo add grafana https://grafana.github.io/helm-charts helm repo update # 安装 Loki helm install loki grafana/loki -n monitoring配置 Fluentd 收集日志apiVersion: v1 kind: ConfigMap metadata: name: fluentd-config namespace: monitoring data: fluent.conf: | source type tail path /var/log/containers/*.log pos_file /var/log/fluentd-containers.log.pos tag kubernetes.* read_from_head true parse type json time_format %Y-%m-%dT%H:%M:%S.%NZ /parse /source match ** type loki url http://loki.monitoring.svc.cluster.local:3100 extra_labels {cluster: my-cluster} flush_interval 10s /match告警配置Prometheus 告警规则apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: name: kubernetes-alerts namespace: monitoring spec: groups: - name: kubernetes.rules rules: - alert: HighCPUUsage expr: sum(rate(node_cpu_seconds_total{modeidle}[5m])) / count(node_cpu_seconds_total{modeidle}) * 100 10 for: 5m labels: severity: critical annotations: summary: High CPU usage detected description: CPU usage is above 90% for more than 5 minutesGrafana 告警通知apiVersion: v1 kind: Secret metadata: name: grafana-alerting-secrets namespace: monitoring type: Opaque data: slack-url: base64-encoded-slack-webhook-url监控最佳实践指标选择# 关键指标示例 apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: critical-metrics namespace: monitoring spec: selector: matchLabels: app: critical-service endpoints: - port: http interval: 15s path: /metrics metricRelabelings: - sourceLabels: [__name__] regex: (request_duration_seconds|error_rate|memory_usage) action: keep资源限制apiVersion: v1 kind: LimitRange metadata: name: monitoring-limits namespace: monitoring spec: limits: - type: Container max: cpu: 2 memory: 4Gi min: cpu: 100m memory: 256Mi高可用性配置apiVersion: apps/v1 kind: StatefulSet metadata: name: prometheus namespace: monitoring spec: replicas: 3 selector: matchLabels: app: prometheus template: spec: containers: - name: prometheus image: prom/prometheus:latest ports: - containerPort: 9090常见问题与解决方案问题 1指标采集失败排查步骤# 检查 ServiceMonitor 配置 kubectl describe servicemonitor my-app-monitor -n monitoring # 检查目标服务 kubectl get svc -l appmy-app # 检查端点状态 kubectl get endpoints -l appmy-app解决方案验证 ServiceMonitor 选择器确保目标服务暴露了 metrics 端点检查网络连通性问题 2日志不显示排查步骤# 检查 Fluentd 状态 kubectl logs -n monitoring fluentd-pod # 检查 Loki 状态 kubectl get pods -n monitoring -l apploki # 检查日志采集配置 kubectl get configmap fluentd-config -n monitoring -o yaml解决方案确保 Fluentd 正确配置验证 Loki 服务正常运行检查权限配置问题 3告警误报排查步骤# 检查告警规则 kubectl get prometheusrule kubernetes-alerts -n monitoring -o yaml # 测试告警表达式 kubectl exec -it prometheus-server-0 -n monitoring -- promql sum(rate(node_cpu_seconds_total[5m])) # 检查告警状态 kubectl get alerts -n monitoring解决方案调整告警阈值增加告警持续时间使用更精确的指标总结Prometheus、Grafana 和 Loki 组成了 Kubernetes 集群完整的可观测性解决方案。通过合理配置指标采集、日志收集和告警规则可以实现对集群的全面监控。在实际应用中需要根据业务需求选择合适的监控指标并结合高可用性配置和告警策略构建稳定可靠的监控体系。参考文献Prometheus Documentation: https://prometheus.io/docs/Grafana Documentation: https://grafana.com/docs/Loki Documentation: https://grafana.com/docs/loki/latest/

相关文章:

Kubernetes 监控与可观测性深度解析:Prometheus + Grafana + Loki

Kubernetes 监控与可观测性深度解析:Prometheus Grafana Loki 引言 在云原生环境中,监控与可观测性是保障系统稳定运行的关键。Kubernetes 生态提供了丰富的监控工具,其中 Prometheus、Grafana 和 Loki 组成了完整的可观测性栈。本文将深…...

CANN/hcomm集群信息初始化API

HcclCommInitClusterInfo 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 产品支持情况 Ascend 950PR/Ascend 950DT&#xff1…...

大模型应用开发指南:从入门到实践,收藏这份从Demo到生产落地的完整攻略

本文分享了AI应用开发中从Demo到生产落地的完整实践,涵盖技术选型、架构设计、核心算法优化及部署经验。通过LangGraph、RAGFlow和Langfuse等工具,解决上下文超限、Prompt管理混乱等问题,最终实现准确率提升25%的工业级AI系统。适合程序员和小…...

Kafka-UI:3分钟快速上手,轻松管理你的Apache Kafka集群

Kafka-UI:3分钟快速上手,轻松管理你的Apache Kafka集群 【免费下载链接】kafka-ui Open-Source Web UI for managing Apache Kafka clusters 项目地址: https://gitcode.com/gh_mirrors/kaf/kafka-ui 你是否曾经为管理Apache Kafka集群而头疼&…...

Kilim Actor模型实践:构建高并发消息传递系统的终极指南 [特殊字符]

Kilim Actor模型实践:构建高并发消息传递系统的终极指南 🚀 【免费下载链接】kilim Lightweight threads for Java, with message passing, nio, http and scheduling support. 项目地址: https://gitcode.com/gh_mirrors/ki/kilim Kilim是一个强…...

C++二叉树构建、深拷贝与可视化输出实战解析

1. 项目概述:从零构建与复制二叉树在C的日常开发中,尤其是涉及到算法、数据结构或者需要处理层次化数据的场景,二叉树是一个绕不开的基础结构。最近我在重构一个旧的项目模块,其中核心需求就是需要动态生成一个数据结构&#xff0…...

HC32F4A0外设引脚自由配置全攻略:如何像STM32重映射一样灵活规划你的原理图?

HC32F4A0外设引脚自由配置全攻略:如何像STM32重映射一样灵活规划你的原理图? 在嵌入式硬件设计中,引脚规划往往是决定项目成败的关键第一步。传统MCU如STM32通过固定功能引脚和有限的重映射功能,给工程师带来诸多限制。而华大半导…...

Purple Pi OH开发板Android 11系统ROOT权限获取与Magisk实战指南

1. 项目概述:为什么我们需要对Purple Pi OH进行ROOT?拿到一块Purple Pi OH开发板,刷上Android 11系统,对于开发者或极客玩家来说,最常遇到的第一个“痒点”可能就是权限不足。系统默认运行在“用户模式”下&#xff0c…...

从飞思卡尔智能车竞赛视频拆解嵌入式系统设计:感知、控制与工程实践

1. 项目概述:从一场竞赛视频看智能车设计的核心逻辑最近在整理资料时,翻到了当年飞思卡尔智能车竞赛(现为全国大学生智能汽车竞赛)中湖南大学参赛队伍的一些视频资料。这些视频,无论是官方发布的比赛实录,还…...

Windows上运行安卓应用:APK安装器完整指南

Windows上运行安卓应用:APK安装器完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接运行安卓应用,却不想安装笨重的…...

5分钟快速上手SignTools:自托管iOS应用签名平台完整教程

5分钟快速上手SignTools:自托管iOS应用签名平台完整教程 【免费下载链接】SignTools ✒ A free, self-hosted platform to sideload iOS apps without a computer 项目地址: https://gitcode.com/gh_mirrors/si/SignTools 想要在iOS设备上自由安装第三方应用…...

开发智能客服系统时利用 Taotoken 实现模型降级与容灾路由的策略

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 开发智能客服系统时利用 Taotoken 实现模型降级与容灾路由的策略 在构建面向真实用户的智能客服系统时,服务的连续性与…...

CodeGPT高级代理系统:10个实用工具助你高效编程的完整指南

CodeGPT高级代理系统:10个实用工具助你高效编程的完整指南 【免费下载链接】CodeGPT The leading open-source AI copilot for JetBrains. Connect to any model in any environment, and customize your coding experience in any way you like. 项目地址: https…...

一键切换语境+保留术语一致性+上下文感知翻译,Perplexity翻译查询功能的3大颠覆性能力,现在不用就落后了

更多请点击: https://codechina.net 第一章:Perplexity翻译查询功能的全景概览 Perplexity 的翻译查询功能并非传统意义上的“文本翻译器”,而是一种融合语义理解、上下文感知与多语言知识检索的智能问答增强机制。它允许用户以任意自然语言…...

从防御者视角看Fastjson 1.2.24漏洞:如何用Docker+vulhub快速搭建靶场并验证修复方案

防御视角下的Fastjson 1.2.24漏洞实战:Docker靶场搭建与修复方案验证 在当今的软件开发中,JSON处理库的安全性问题日益凸显。作为Java生态中最流行的JSON库之一,Fastjson因其高性能而广受欢迎,但同时也因其历史漏洞频发而备受关注…...

CANN/asnumpy-docs 架构设计

Architecture 【免费下载链接】asnumpy-docs 项目地址: https://gitcode.com/cann/asnumpy-docs This document describes the internal architecture of AsNumpy, including the three-layer design, the core NPUArray data structure, the API module layout, and t…...

ArcGIS Pro 3.x 批量处理遥感栅格:用Python脚本实现自动化转点、计算与导出(附完整代码)

ArcGIS Pro 3.x 遥感栅格自动化处理实战:从数据清洗到生产级流水线构建 遥感数据分析师常常需要处理TB级的时序栅格数据,比如月度NDVI指数、地表温度或降水分布。传统手动操作不仅效率低下,还容易因人为失误导致数据不一致。本文将分享如何基…...

Onyx Core API完全手册:RESTful接口详解与实战案例

Onyx Core API完全手册:RESTful接口详解与实战案例 【免费下载链接】Onyx Onyx 项目地址: https://gitcode.com/gh_mirrors/ony/Onyx Onyx Core是一个强大的企业级区块链平台,提供完整的RESTful API接口,让开发者能够轻松构建和管理区…...

昇腾C解交织API文档

DeInterleave 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.c…...

Windows缩略图加载太慢?这款智能预加载工具让文件浏览快如闪电

Windows缩略图加载太慢?这款智能预加载工具让文件浏览快如闪电 【免费下载链接】WinThumbsPreloader-V2 WinThumbsPreloader is a powerful open source tool for quickly preloading thumbnails in Windows Explorer. 项目地址: https://gitcode.com/gh_mirrors/…...

ncmdump终极指南:5分钟解锁网易云音乐NCM加密文件

ncmdump终极指南:5分钟解锁网易云音乐NCM加密文件 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾在网易云音乐下载了心爱的歌曲,却发现只能在特定客户端播放?当你想在车载音响、智能音箱…...

靠谱的远程手机控制软件 远程控制手机推荐用无界趣连2.0

靠谱的远程手机控制软件,能帮我们打破设备空间限制,日常办公、远程协助或游戏串流都能高效搞定。在众多远程手机控制软件里,无界趣连2.0凭借扎实的性能与无套路的体验,成为不少用户的首选,不管是新手还是老手&#xff…...

电力系统时序一致性保障:elec-ops-prediction的长时序稳定性约束实现

电力系统时序一致性保障:elec-ops-prediction的长时序稳定性约束实现 【免费下载链接】elec-ops-prediction elec-ops-prediction 是 CANN 社区 Electrical Engineering SIG(电力行业兴趣小组)旗下的电力负荷预测算子库, 聚焦于电…...

3分钟彻底解决Cursor试用限制:设备标识重置技术深度解析

3分钟彻底解决Cursor试用限制:设备标识重置技术深度解析 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Your request has been blocked as our system has detected suspicious activity / Youve reached your trial request limit…...

wlnmp一键安装包260520更新:多软件版本升级,支持多系统架构快速部署

wlnmp一键安装包更新:多软件版本升级wlnmp一键安装包在260520迎来更新,此次更新涉及多个重要软件的版本升级,包括nginx1.30.1、php8.2.31、php8.3.31等多个php版本,以及MySQL8.0.46、MySQL8.4.9。这些软件版本的更新,为…...

深度解密Il2CppDumper:Unity逆向工程的高效实战指南

深度解密Il2CppDumper:Unity逆向工程的高效实战指南 【免费下载链接】Il2CppDumper Unity il2cpp reverse engineer 项目地址: https://gitcode.com/gh_mirrors/il/Il2CppDumper Il2CppDumper是一款专为Unity游戏逆向工程设计的强大工具,能够帮助…...

ESP32任务阻塞导致看门狗报错?手把手教你用menuconfig调整超时时间

ESP32任务看门狗超时问题全解析:从原理到menuconfig实战配置 在ESP32开发过程中,许多开发者都遇到过那个令人头疼的报错:"Task watchdog got triggered"。这个看似简单的错误背后,其实隐藏着实时操作系统任务调度的核心…...

Intel 14代酷睿接口更迭:技术推演与用户决策指南

1. 项目概述:一次关于“接口更迭”的深度技术推演最近,关于下一代酷睿处理器的传闻又开始在圈内流传,一个核心的焦点再次被推上风口浪尖:Intel 14代酷睿(Raptor Lake Refresh)可能又要更换CPU插槽接口了。这…...

3大AI创作效率瓶颈的模块化解法:ComfyUI企业级工作流自动化实践

3大AI创作效率瓶颈的模块化解法:ComfyUI企业级工作流自动化实践 【免费下载链接】ComfyUI The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface. 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI …...

G-Helper完整指南:3分钟掌握华硕笔记本性能优化神器

G-Helper完整指南:3分钟掌握华硕笔记本性能优化神器 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expe…...