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

本文涉及的产品
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 本文基于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

目录
相关文章
|
16天前
|
存储 Prometheus 监控
使用helm快速部署prometheus+Grafana
通过Helm快速部署Prometheus监控栈:添加仓库、更新缓存并安装kube-prometheus-stack。建议创建独立命名空间(如monitoring)进行隔离,使用`port-forward`临时访问Prometheus和Grafana界面。通过自定义values.yaml文件可配置持久化、密码等参数,实现灵活管理。
112 0
|
监控 安全 Java
SpringBoot-开启Admin监控服务
本文介绍如何在SpringBoot项目中开启Admin监控服务。
391 0
|
Prometheus Cloud Native Java
微服务框架(二十三)Prometheus + Grafana 安装、配置及使用
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文为Prometheus + Grafana 安装、配置及使用 本系列文章中所使用的框架版本为Spring ...
|
Prometheus Kubernetes 监控
k8s中部署Grafana-prometheus系列文章第二篇
k8s中部署Grafana-prometheus系列文章第二篇
|
16天前
|
IDE Java Maven
使用mvn generate-sources生成在target目录下的代码和类应该如何调用
Maven项目中,执行`mvn generate-sources`后,生成代码位于`target/generated-sources`。该目录会自动加入编译类路径,Maven后续阶段可直接编译。IDE(如IntelliJ IDEA)通常自动识别为源码根目录,若未识别,可刷新Maven项目即可正确调用生成代码。
84 7
|
16天前
|
运维 Kubernetes API
如何理解K8s自定义资源(CRD)——从nacos的K8s集群部署开始
通过部署Nacos实践,解析Kubernetes中自定义资源(CRD)的核心概念。借助Nacos Operator,阐述CRD如何扩展API、实现声明式管理有状态服务,并揭示Operator模式自动化运维的底层逻辑,助力理解云原生应用管理机制。
99 0
|
5月前
|
Prometheus 监控 Cloud Native
|
5月前
|
Prometheus 监控 Cloud Native
Spring Boot 可视化监控
本文介绍了如何通过Spring Actuator、Micrometer、Prometheus和Grafana为Spring Boot应用程序添加监控功能。首先创建了一个Spring Boot应用,并配置了Spring Actuator以暴露健康状态和指标接口。接着,利用Micrometer收集应用性能数据,并通过Prometheus抓取这些数据进行存储。最后,使用Grafana将Prometheus中的数据可视化,展示在精美的仪表板上。整个过程简单易行,为Spring Boot应用提供了基本的监控能力,同时也为后续扩展更详细的监控指标奠定了基础。
887 2