本文涉及:如何在k8s下搭建Prometheus+grafana的監控環境
基本概念
Prometheus提供了容器和雲原生領域數據搜集、存儲、處理、可視化和告警一套完整的解決方案,最初時是由SoundCloud公司開發的。自2012年開源以來社區成員就不斷遞增。如今的Prometheus已經發展到繼Kubernetes后第2個正式加入CNCF基金會的項目
Prometheus的特點?
- 多維的數據模型(基於時間序列的k/v鍵值對)。
- 靈活的查詢及聚合語句(PromQL)。
- 不依賴分布式存儲,節點自治。
- 基於HTTP的pull模式采集時間序列數據。
- 可以使用pushgateway(prometheus的可選中間件)實現push模式。
- 可以使用動態服務發現或靜態配置采集的目標機器。
- 支持多種圖形及儀表盤。
Prometheus可以監控什么?
- k8s、docker、mysql、redis、es、consul、rabbitmq、zabbix等等
Prometheus架構圖

Prometheus安裝部署
Helm 安裝
Helm 是一個命令行下的客戶端工具。主要用於 Kubernetes 應用程序 Chart 的創建、打包、發布以及創建和管理本地和遠程的 Chart 倉庫。
1 |
[root@syj ~] |
Tiller 服務器安裝
Tiller 是 Helm 的服務端,部署在 Kubernetes 集群中。Tiller 用於接收 Helm 的請求,並根據 Chart 生成 Kubernetes 的部署文件( Helm 稱為 Release ),然后提交給 Kubernetes 創建應用。Tiller 還提供了 Release 的升級、刪除、回滾等一系列功能。
創建rbac-config.yaml
1 |
apiVersion: v1 |
啟動
1 |
[root@syj ~] |
使用阿里雲鏡像進行安裝
1 |
[root@syj ~]# helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts |
查看結果
1 |
[root@syj ~]# helm version |
部署 Prometheus Operator
創建命名空間
1 |
[root@syj ~] |
下載Prometheus Operator
1 |
[root@syj ~]# wget https://github.com/coreos/prometheus-operator/archive/release-0.29.zip |
將下載下來的依賴包解壓並重命名為prometheus-operator並cd到此目錄
安裝prometheus相關內容
1 |
helm install --name prometheus-operator --set rbacEnable=true --namespace=monitoring helm/prometheus-operator |
驗證
1 |
[root@syj ~]# kubectl get pod -n monitoring |
安裝 kube-prometheus
1 |
[root@syj ~]# mkdir -p helm/kube-prometheus/charts |
驗證
1 |
[root@syj ~]# kubectl get svc -n monitoring |
將grafana的Service類型改為NodePort
1 |
kubectl patch svc kube-prometheus-grafana -p '{"spec":{"type":"NodePort"}}' -n monitoring |
此時訪問grafana的默認端口31106即可:
1 |
http://ip:31106 |
安裝過程參考文章:https://blog.csdn.net/wangzan18/article/details/85270816
grafana的各種模板可參考
https://grafana.com/dashboards
