云原生监控系统Prometheus——Exporter(Redis-exporter)

Exporter(Redis-exporter)

  在安装之前,首先在官方下载页面 https://github.com/prometheus/mysqld_exporter/releases/ 找到最新 redis_exporter 版本,下载最新版本中特定平台的二进制文件,如下:

一、部署 redis_exporter

  我这里都是 kubernetes 环境,就不讲二进制部署了。以下是 StatefulSet 运行的 Reids server 服务,以及 redis_exporter 的配置清单 yaml 文件:

  • redis server 版本号:redis:6.0.9-alpine
    • redis server 的 statefulset 配置清单文件如下:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      kind: StatefulSet
      apiVersion: apps/v1
      metadata:
        name: redis-ke9owy
        namespace: devops-redis-test
        labels:
          app.kubernetes.io/instance: redis-ke9owy
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/name: redis
          app.kubernetes.io/version: 6.0.9
          app.kubesphere.io/instance: redis-ke9owy
          helm.sh/chart: redis-0.3.5
        annotations:
          kubesphere.io/creator: admin
          meta.helm.sh/release-name: redis-ke9owy
          meta.helm.sh/release-namespace: devops-redis-test
      spec:
        replicas: 1
        selector:
          matchLabels:
            app.kubernetes.io/instance: redis-ke9owy
            app.kubernetes.io/name: redis
        template:
          metadata:
            creationTimestamp: null
            labels:
              app.kubernetes.io/instance: redis-ke9owy
              app.kubernetes.io/name: redis
            annotations:
              kubesphere.io/creator: admin
          spec:
            volumes:
              - name: configs
                configMap:
                  name: redis-ke9owy
                  defaultMode: 420
            containers:
              - name: redis
                image: 'redis:6.0.9-alpine'
                command:
                  - /bin/sh
                  - '-c'
                  - |
                    rm -rf /redis/data/lost+found
                    args="
                    --include /tmp/conf/default.conf
                    --include /tmp/conf/user.conf
       
                    "
                    redis-server $args
                ports:
                  - name: redis
                    containerPort: 6379
                    protocol: TCP
                resources: {}
                volumeMounts:
                  - name: configs
                    mountPath: /tmp/conf
                  - name: data
                    mountPath: /data/redis
                terminationMessagePath: /dev/termination-log
                terminationMessagePolicy: File
                imagePullPolicy: IfNotPresent
            restartPolicy: Always
            terminationGracePeriodSeconds: 30
            dnsPolicy: ClusterFirst
            securityContext: {}
            schedulerName: default-scheduler
        volumeClaimTemplates:
          - kind: PersistentVolumeClaim
            apiVersion: v1
            metadata:
              name: data
              creationTimestamp: null
              labels:
                app.kubernetes.io/instance: redis-ke9owy
                app.kubernetes.io/name: redis
            spec:
              accessModes:
                - ReadWriteOnce
              resources:
                requests:
                  storage: 1Gi
              volumeMode: Filesystem
            status:
              phase: Pending
        serviceName: redis-ke9owy
        podManagementPolicy: OrderedReady
        updateStrategy:
          type: RollingUpdate
          rollingUpdate:
            partition: 0
        revisionHistoryLimit: 10
  • redis_exporter 版本号:oliver006/redis_exporter:v1.3.4
    • redis_exporter 的 Deployment 配置清单 yaml 文件如下:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      kind: Deployment
      apiVersion: apps/v1
      metadata:
        name: redis-e-rhqcz7-redis-exporter
        namespace: devops-redis-test
        labels:
          app: redis-exporter
          app.kubernetes.io/managed-by: Helm
          app.kubesphere.io/instance: redis-e-rhqcz7
          chart: redis-exporter-3.4.5
          heritage: Helm
          release: redis-e-rhqcz7
        annotations:
          deployment.kubernetes.io/revision: '1'
          kubesphere.io/creator: admin
          meta.helm.sh/release-name: redis-e-rhqcz7
          meta.helm.sh/release-namespace: devops-redis-test
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: redis-exporter
            release: redis-e-rhqcz7
        template:
          metadata:
            creationTimestamp: null
            labels:
              app: redis-exporter
              release: redis-e-rhqcz7
            annotations:
              kubesphere.io/creator: admin
          spec:
            containers:
              - name: redis-exporter
                image: 'oliver006/redis_exporter:v1.3.4'
                ports:
                  - name: exporter-port
                    containerPort: 9121
                    protocol: TCP
                env:
                  - name: REDIS_ADDR
                    value: 'redis://myredis:6379'
                resources: {}
                livenessProbe:
                  httpGet:
                    path: /
                    port: exporter-port
                    scheme: HTTP
                  timeoutSeconds: 1
                  periodSeconds: 10
                  successThreshold: 1
                  failureThreshold: 3
                readinessProbe:
                  httpGet:
                    path: /
                    port: exporter-port
                    scheme: HTTP
                  timeoutSeconds: 1
                  periodSeconds: 10
                  successThreshold: 1
                  failureThreshold: 3
                terminationMessagePath: /dev/termination-log
                terminationMessagePolicy: File
                imagePullPolicy: IfNotPresent
            restartPolicy: Always
            terminationGracePeriodSeconds: 30
            dnsPolicy: ClusterFirst
            serviceAccountName: redis-e-rhqcz7-redis-exporter
            serviceAccount: redis-e-rhqcz7-redis-exporter
            securityContext: {}
            schedulerName: default-scheduler
        strategy:
          type: RollingUpdate
          rollingUpdate:
            maxUnavailable: 25%
            maxSurge: 25%
        revisionHistoryLimit: 10
        progressDeadlineSeconds: 600 

二、与 Prometheus 集成

  与 Prometheus 的配置文件 prometheus.yaml 中的 static_configs 模块内,继续追加配置内容来采集 redis_exporter 提供的数据。添加的参考配置内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"
 
    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
 
    static_configs:
      - targets: ["localhost:9090"]
     
  - job_name: "node_exporter"
    static_configs:
      - targets: ["192.168.2.121:9100"]
 
  - job_name: "mysqld_exporter"
    scrape_interval: 10s
    static_configs:
      - targets: ["192.168.2.121:9104"]
 
  - job_name: "redis_exporter"
    scrape_interval: 10s
    static_configs:
      - targets: ["192.168.2.121:9121"
posted @   左扬  阅读(1322)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
levels of contents
点击右上角即可分享
微信分享提示