自定义通过helm部署的prometheus+Grafana监控框架

简介: 本文基于Helm快速部署kube-prometheus-stack,通过自定义`custom-values.yaml`实现Prometheus与Grafana的精细化配置,涵盖资源限制、持久化存储、服务暴露、告警规则及仪表盘导入,支持K8s集群全方位监控,提升可观测性与运维效率。

在使用helm快速部署的基础上,本文实现对prometheus+Grafana监控框架的自定义配置;

获取kube-prometheus-stack Helm Chart 的所有默认配置值

helm show values prometheus-community/kube-prometheus-stack > custom-values.yaml

该命令的作用是获取 kube-prometheus-stack Helm Chart 的所有默认配置值,并将其保存到本地文件 custom-values.yaml中。这个文件是您定制化 Prometheus Stack 部署的核心工具。

一、custom-values.yaml 文件的作用

​配置中心​:包含 Prometheus、Alertmanager、Grafana 等所有组件的可配置参数

​定制化基础​:通过修改此文件,可以:

  1. 调整资源限制(CPU/内存)
  2. 配置持久化存储
  3. 修改服务暴露方式
  4. 自定义告警规则
  5. 配置 Grafana 仪表盘和数据源
  6. 调整 Prometheus 抓取配置
  7. 版本控制​:将配置纳入版本控制,确保环境一致性
  8. 可重复部署​:使用相同的 values 文件可在不同环境部署相同配置

二、如何修改 custom-values.yaml 实现 K8s 监控需求

以下是关键配置项及其作用,按功能分类说明:

  1. 基础配置
# 启用所有核心组件
kube-prometheus-stack:
  fullnameOverride: "kube-prometheus"

# 命名空间配置(建议保持默认)
namespaceOverride: ""
  1. Prometheus 配置
prometheus:
  enabled: true

  # 持久化存储配置(强烈推荐)
  prometheusSpec:
    storageSpec:
      volumeClaimTemplate:
        spec:
          storageClassName: "standard" # 替换为您的存储类
          accessModes: ["ReadWriteOnce"]
          resources:
            requests:
              storage: 50Gi # 根据需求调整大小

  # 资源限制
    resources:
      limits:
        memory: 4Gi
        cpu: 2
      requests:
        memory: 2Gi
        cpu: 1

  # 数据保留时间
    retention: 15d

  # 服务暴露方式(NodePort 示例)
  service:
    type: NodePort
    nodePort: 30090
  1. Grafana 配置
grafana:
  enabled: true

  # 管理员凭证
  adminUser: "admin"
  adminPassword: "your-strong-password" # 修改为安全密码

  # 持久化存储
  persistence:
    enabled: true
    storageClassName: "standard"
    accessModes: ["ReadWriteOnce"]
    size: 10Gi

  # 服务暴露方式(LoadBalancer 示例)
  service:
    type: LoadBalancer
    port: 80
    targetPort: 3000

  # 预配置数据源(Prometheus)
  datasources:
    datasources.yaml:
      apiVersion: 1
      datasources:
      - name: Prometheus
        type: prometheus
        url: http://prometheus-operated.monitoring.svc:9090
        access: proxy
        isDefault: true

  # 导入默认仪表盘(包含K8s监控)
  sidecar:
    dashboards:
      enabled: true
      label: grafana_dashboard
  1. Kubernetes 监控配置
# 启用核心监控组件
kubeStateMetrics:
  enabled: true

nodeExporter:
  enabled: true

kubeControllerManager:
  enabled: true

kubeScheduler:
  enabled: true

kubeEtcd:
  enabled: true

kubeProxy:
  enabled: true

# 自动发现配置
prometheus:
  prometheusSpec:
    serviceMonitorSelectorNilUsesHelmValues: false
    podMonitorSelectorNilUsesHelmValues: false
  1. Alertmanager 配置
alertmanager:
  enabled: true
  config:
    global:
      resolve_timeout: 5m
    route:
      group_by: ['job']
      group_wait: 30s
      group_interval: 5m
      repeat_interval: 12h
      receiver: 'null'
      routes:
      - match:
          alertname: Watchdog
        receiver: 'null'
    receivers:
    - name: 'null'

  # 持久化存储
  alertmanagerSpec:
    storage:
      volumeClaimTemplate:
        spec:
          storageClassName: "standard"
          accessModes: ["ReadWriteOnce"]
          resources:
            requests:
              storage: 10Gi
  1. 资源监控配置
# 添加自定义 ServiceMonitors(监控其他命名空间)
prometheus:
  additionalServiceMonitors:
    - name: "my-application"
      selector:
        matchLabels:
          app: my-app
      namespaceSelector:
        any: true
      endpoints:
        - port: web
          interval: 30s

三、部署自定义配置

  1. 修改 custom-values.yaml 文件
  2. 应用配置进行部署:
# 首次安装
helm install prometheus prometheus-community/kube-prometheus-stack \
  -f custom-values.yaml \
  --namespace monitoring

# 更新配置
helm upgrade prometheus prometheus-community/kube-prometheus-stack \
  -f custom-values.yaml \
  --namespace monitoring

四、验证和访问

  1. 检查 Pod 状态:
kubectl get pods -n monitoring
  1. 访问 Grafana:
    获取访问地址:
kubectl get svc -n monitoring | grep grafana

使用配置的用户名/密码登录
导航到 Dashboards → Manage,查看预装的 Kubernetes 仪表盘

  1. 访问 Prometheus:
kubectl port-forward svc/prometheus-kube-prometheus-prometheus 9090:9090 -n monitoring

浏览器访问 http://localhost:9090

目录
相关文章
|
3月前
|
存储 Prometheus 监控
使用helm快速部署prometheus+Grafana
通过Helm快速部署Prometheus监控栈:添加仓库、更新缓存并安装kube-prometheus-stack。建议创建独立命名空间(如monitoring)进行隔离,使用`port-forward`临时访问Prometheus和Grafana界面。通过自定义values.yaml文件可配置持久化、密码等参数,实现灵活管理。
354 0
|
存储 Prometheus Cloud Native
Thanos 工作原理及组件简介
Thanos 工作原理及组件简介
|
Prometheus Kubernetes 监控
k8s中部署Grafana-prometheus系列文章第二篇
k8s中部署Grafana-prometheus系列文章第二篇
|
存储 人工智能 安全
智存跃迁,阿里云存储面向 AI 升级全栈数据存储能力
一文总览阿里云存储产品创新与进展!
886 0
|
3月前
|
Java 关系型数据库 MySQL
基于android的体育馆预约使用系统
本系统基于B/S架构,采用Spring Boot、Java、MySQL与Android技术,构建智能化体育馆预约平台。实现场地查询、在线预约、支付及提醒功能,提升用户体验与场馆运营效率,推动全民健身发展。
|
3月前
|
IDE Java Maven
使用mvn generate-sources生成在target目录下的代码和类应该如何调用
Maven项目中,执行`mvn generate-sources`后,生成代码位于`target/generated-sources`。该目录会自动加入编译类路径,Maven后续阶段可直接编译。IDE(如IntelliJ IDEA)通常自动识别为源码根目录,若未识别,可刷新Maven项目即可正确调用生成代码。
183 7
|
3月前
|
运维 Kubernetes API
如何理解K8s自定义资源(CRD)——从nacos的K8s集群部署开始
通过部署Nacos实践,解析Kubernetes中自定义资源(CRD)的核心概念。借助Nacos Operator,阐述CRD如何扩展API、实现声明式管理有状态服务,并揭示Operator模式自动化运维的底层逻辑,助力理解云原生应用管理机制。
288 0
|
5月前
|
存储 Prometheus 监控
从入门到实战:一文掌握微服务监控系统 Prometheus + Grafana
随着微服务架构的发展,系统监控变得愈发重要。本文介绍如何利用 Prometheus 和 Grafana 构建高效的监控系统,涵盖数据采集、存储、可视化与告警机制,帮助开发者提升系统可观测性,及时发现故障并优化性能。内容涵盖 Prometheus 的核心组件、数据模型及部署方案,并结合 Grafana 实现可视化监控,适合初学者和进阶开发者参考实践。
756 6
|
7月前
|
Prometheus 监控 Cloud Native

热门文章

最新文章