Prometheus監控k8s(7)-prometheus使用exporter監控應用-redis


prometheus使用exporter監控應用-redis

參考https://www.qikqiak.com/k8s-book/docs/53.監控Kubernetes集群應用.html

應用可能沒有自帶/metrics接口供 Prometheus 使用,在這種情況下,我們就需要利用 exporter 服務來為 Prometheus 提供指標數據了。Prometheus 官方為許多應用就提供了對應的 exporter 應用,也有許多第三方的實現,我們可以前往官方網站進行查看:exporters

通過一個redis-exporter的服務來監控 redis 服務,對於這類應用,我們一般會以 sidecar 的形式和主應用部署在同一個 Pod 中,比如我們這里來部署一個 redis 應用,並用 redis-exporter 的方式來采集監控數據供 Prometheus 使用,如下資源清單文件:(prome-redis.yaml)

 

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: redis
  namespace: kube-system
spec:
  template:
    metadata:
    #  annotations:
     #   prometheus.io/scrape: "true"
     #   prometheus.io/port: "9121"
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis:4
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 6379
      - name: redis-exporter
        image: oliver006/redis_exporter:latest
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort: 9121
---
kind: Service
apiVersion: v1
metadata:
  name: redis
  namespace: kube-system
spec:
  selector:
    app: redis
  ports:
  - name: redis
    port: 6379
    targetPort: 6379
  - name: prom
    port: 9121
    targetPort: 9121

 

redis 這個 Pod 中包含了兩個容器,一個就是 redis 本身的主應用,另外一個容器就是 redis_exporter

 

[root@k8s-master prometheus]# kubectl apply -f prome-redis.yaml
deployment.extensions/redis created
service/redis created
[root@k8s-master prometheus]#

[root@k8s-master prometheus]# kubectl get pods -n kube-system | grep redis
redis-69987696df-rrm6n                    2/2     Running     0          61s
[root@k8s-master prometheus]# kubectl get svc -n kube-system | grep redis
redis                      ClusterIP   10.96.3.57       <none>        6379/TCP,9121/TCP        70s
[root@k8s-master prometheus]#

 

 

我們可以通過 9121 端口來校驗是否能夠采集到數據:

 

[root@k8s-master prometheus]# curl 10.96.3.57:9121/metrics | grep redis_up
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 16548    0 16548    0     0   358k      0 --:--:-- --:--:-- --:--:--  367k
# HELP redis_up Information about the Redis instance
# TYPE redis_up gauge
redis_up 1
# HELP redis_uptime_in_seconds uptime_in_seconds metric
# TYPE redis_uptime_in_seconds gauge
redis_uptime_in_seconds 110
[root@k8s-master prometheus]#

 

 

 

 

同樣的,現在我們只需要更新 Prometheus 的配置文件:

- job_name: 'redis'
  static_configs:
  - targets: ['redis:9121']  #同一個namespace

 

 

[root@k8s-master prometheus]# vim prometheus/prometheus-configmap.yaml
[root@k8s-master prometheus]#
[root@k8s-master prometheus]# kubectl apply -f  prometheus/prometheus-configmap.yaml
configmap/prometheus-config configured
[root@k8s-master prometheus]#
#隔一會兒執行reload操作
curl -X POST "http://10.109.8.226:9090/-/reload"

 

 

 

 

 

 按我的prometheus安裝方式,官方也默認配置pod自動發現,具體參考下一篇

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM