Prometheus指南

Prometheus指南

这篇指南展示了如何在集群中安装、配置和使用一个简单的Prometheus实例。你将通过集群运行Prometheus,配置它来抓取它自己和一个示例应用程序的数据,然后使用查询、规则和图表来使用收集到的时间序列数据。

部署空的Prometheus实例

一旦你准备好了Helm,你可以添加一个图表仓库。检查Artifact Hub上可用的Helm图表仓库

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

这里是原始 values.yaml version 8.4.3

需要修改一些信息来完成部署空的Prometheus实例


## Deploy a Prometheus instance
##
prometheus:
  ## @param prometheus.replicaCount Number of Prometheus replicas desired
  ##
  replicaCount: 1
  ## @param prometheus.scrapeInterval Interval between consecutive scrapes
  ##
  scrapeInterval: "60s"
  ## @param prometheus.resources CPU/Memory resource requests/limits for node
  ## ref: https://kubernetes.io/docs/user-guide/compute-resources/
  ##
  resources: 
  resources:
    limits: # sizing Prometheus https://www.robustperception.io/how-much-ram-does-prometheus-2-x-need-for-cardinality-and-ingestion/
      cpu: "1000m"
      memory: "2048Mi"  
  ## Prometheus persistence parameters
  ##
  persistence:
    ## @param prometheus.persistence.enabled Use PVCs to persist data. If the storageSpec is provided this will not take effect.
    ##
    enabled: true
    ## @param prometheus.persistence.size Persistent Volume Size
    ##
    size: 8Gi
    ## @param prometheus.persistence.annotations Persistent Volume Claim annotations
    ##
    annotations:
      "ignore": "true"
  ## @param prometheus.podMetadata [object] Standard object's metadata
  ## ref: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata
  ##
  podMetadata:
    ## labels:
    ##   app: prometheus
    ##   k8s-app: prometheus
    ##
    annotations:
      prometheus.io/scrape: "true"
      prometheus.io/path: "/metrics"
      prometheus.io/port: "9090"

  ## If true, create a serviceMonitor for alertmanager
  ##
  serviceMonitor:
    ## @param prometheus.serviceMonitor.enabled Creates a ServiceMonitor to monitor Prometheus itself
    ##
    enabled: false
  ## @param prometheus.externalLabels External labels to add to any time series or alerts when communicating with external systems
  ##
  externalLabels:
    cluster: "just-test"
  ## @param prometheus.serviceMonitorNamespaceSelector Namespaces to be selected for ServiceMonitor discovery
  ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage
  ##
  serviceMonitorNamespaceSelector:
    matchExpressions:
      - key: "namespace"
        operator: "In"
        values:
          - "test"
  ## @param prometheus.retention Metrics retention days
  ##
  retention: 30d
  ## @param prometheus.retentionSize Maximum size of metrics
  ##
  retentionSize: 2GB    
  ## @param prometheus.disableCompaction Disable the compaction of the Prometheus TSDB
  ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec
  ## ref: https://prometheus.io/docs/prometheus/latest/storage/#compaction
  ##
  disableCompaction: true
  ## @param prometheus.shards Number of Prometheus shards desired
  ##
  shards: 1
  ## Note that the prometheus will fail to provision if the correct secret does not exist.
  ## @param prometheus.additionalScrapeConfigs.enabled Enable additional scrape configs
  ## @param prometheus.additionalScrapeConfigs.type Indicates if the cart should use external additional scrape configs or internal configs
  ## @param prometheus.additionalScrapeConfigs.external.name Name of the secret that Prometheus should use for the additional external scrape configuration
  ## @param prometheus.additionalScrapeConfigs.external.key Name of the key inside the secret to be used for the additional external scrape configuration
  ## @param prometheus.additionalScrapeConfigs.internal.jobList A list of Prometheus scrape jobs
  ##
  additionalScrapeConfigs:
    enabled: true
    external:
      ## Name of the secret that Prometheus should use for the additional scrape configuration
      ##
      name: prometheus-scrape-jobs
      ## Name of the key inside the secret to be used for the additional scrape configuration.
      ##
      key: scrape-jobs.yaml
  ## Bitnami Prometheus image version
  ## ref: https://hub.docker.com/r/bitnami/prometheus/tags/
  ## @param prometheus.image.registry Prometheus image registry
  ## @param prometheus.image.repository Prometheus image repository
  ## @param prometheus.image.tag Prometheus image tag (immutable tags are recommended)
  ## @param prometheus.image.digest Prometheus image digest in the way sha256:aa.... Please note this parameter, if set, will override the tag
  ## @param prometheus.image.pullSecrets Specify docker-registry secret names as an array
  ##
  image:
    registry: dockerhub.aliyuncs.com
    repository: dockerhub/prometheus
    tag: 2.43.0-debian-11-r2
  ## Thanos sidecar container configuration
  ##
  thanos:
    ## @param prometheus.thanos.create Create a Thanos sidecar container
    ##
    create: false

Prometheus 应该已经启动。您也应该能够浏览到它自身的状态页面,地址是 localhost:9090。给它几秒钟的时间,让它从它自己的 HTTP 指标端点收集有关自身的数据。

您也可以通过访问其指标端点来验证Prometheus是否正在提供有关自身的指标:prometheus:9090/metrics

抓取配置

Prometheus通过抓取目标的指标HTTP端点来收集指标。由于Prometheus以相同的方式公开有关自身的数据,它也可以抓取并监控自身的健康状况。

虽然一个只收集自身数据的Prometheus服务器并不是很有用,但它是一个很好的开始示例。将以下基本的Prometheus配置保存为一个名为prometheus.yml的文件:

apiVersion: v1
kind: Secret
metadata:
  name: prometheus-scrape-jobs
  namespace: test
type: Opaque
stringData:
  scrape-jobs.yaml: |
    - job_name: "annotation"
      kubernetes_sd_configs:
        - role: pod
          namespaces:
            own_namespace: true
            names: ["test"] 
      relabel_configs:
        - source_labels:
            - __meta_kubernetes_pod_annotation_prometheus_io_scrape
          regex: true
          action: keep
        - action: labelmap # namespace
          regex: __meta_kubernetes_namespace
          replacement: namespace
        - action: labelmap
          regex: __meta_kubernetes_pod_label_app_kubernetes_io_name
          replacement: app
        - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
          target_label: __metrics_path__
          action: replace
        - action: replace
          source_labels:
            [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
          regex: (.+):(?:\d+);(\d+)
          replacement: ${1}:${2}
          target_label: __address__

有关配置选项的完整规范,请参见配置文档

观察指标收集

要绘制表达式,请转到 prometheus:9090/graph 并使用 “Graph” 标签页。

例如,输入以下表达式来绘制自抓取的 Prometheus 中每秒创建的块的数量:

rate(prometheus_tsdb_head_chunks_created_total[1m])

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值