helm快速部署prometheus

213 阅读2分钟

Prometheus 简介

Prometheus 是一个开源的系统监测和警报工具,最初是在 SoundCloud 建立的。自2012年以来,许多公司和组织已经采用了 Prometheus,该项目拥有一个非常活跃的开发者和用户社区。现在,它是一个独立的开源项目,并独立于任何公司进行维护。为了强调这一点,并澄清项目的管治结构,Prometheus 在2016年加入了 Cloud Native Computing Foundation,成为继 Kubernetes 之后的第二个托管项目。

Prometheus 将其度量指标作为时间序列数据进行收集和存储,即度量信息存储在其记录时间戳旁边的可选键值对标签中。

准备

安装

导入bitnami repo

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

准备chart values

完整的原始值可以通过helm命令查看

helm show values bitnami/kube-prometheus

需要提供一个额外的配置,以下配置启动 pod 注解自动发现

apiVersion: v1
kind: Secret
metadata:
  name: prometheus.yaml 
type: Opaque
stringData:
  promYaml: |
    - job_name: "kubernetes-pods"
      kubernetes_sd_configs:
        - role: pod
      relabel_configs:
        - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
          action: keep
          regex: true
        - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scheme]
          action: replace
          target_label: __scheme__
          regex: (https?)
        - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
          action: replace
          target_label: __metrics_path__
          regex: (.+)
        - source_labels:
            [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
          action: replace
          target_label: __address__
          regex: ([^:]+)(?::\d+)?;(\d+)
          replacement: $1:$2
        - source_labels: [__meta_kubernetes_namespace]
          action: replace
          target_label: kubernetes_namespace
        - source_labels: [__meta_kubernetes_pod_name]
          action: replace
          target_label: kubernetes_pod

需要修改的地方

prometheus:
  externalUrl: 'https://prom.example.com'
  ruleSelector: { matchLabels: { prometheus: 'example' } }
  disableCompaction: true # 这里用到 thanos 的话需要关闭 prometheus 自己的压缩
  persistence:
    enabled: true
    size: 20Gi # 如果是阿里云的话,最小要求 20Gi,可以根据需求自己调整
  additionalScrapeConfigs:
    enabled: true
    name: 'prometheus.yaml'
    key: 'promYaml'
alertmanager:
  configSelector: { matchLabels: { alertmanagerConfig: 'example' } }

使用

添加 data source

打开 Grafana,找到 Data sources,添加 datasource,选择 prometheus。

image.png

添加仪表盘

  1. 访问 grafana.com/grafana/das…
  2. 比如要添加 Node Exporter Full,搜索 Node,打开 Node Exporter Full 详情,在右边 Copy ID to clipboard
  3. 返回 grafana,选择 Dashboards -> import,输入刚刚拷贝的 ID,此处是1860。

结果

打开 Dashboard 页面,点击仪表盘,就可以看到节点的一些指标了

image.png