Prometheus監(jiān)控k8s集群

Prometheus

Prometheus是什么?Prometheus是由SoundCloud開發(fā)的開源監(jiān)控報(bào)警系統(tǒng)和時(shí)序列數(shù)據(jù)庫(kù)(TSDB)。Prometheus使用Go語(yǔ)言開發(fā),是Google BorgMon監(jiān)控系統(tǒng)的開源版本。

prometheus結(jié)構(gòu)圖如下:


architecture.png

Prometheus Operator

prometheus Operator 可以在 Kubernetes 中創(chuàng)建、配置和管理 Prometheus 集群。這個(gè) Chart 包括了多種組件以用于不同的用途。


微信截圖_20191016105303.png

默認(rèn)安裝會(huì)監(jiān)控安裝這個(gè) chart 的 kubernetes 集群。它與 kube-prometheus 項(xiàng)目緊密相關(guān)。

基礎(chǔ)條件

  • Kubernetes 1.10+ with Beta APIs
  • Helm 2.10+
  • 對(duì)于版本高于 0.18.0 的 Prometheus Operator 要求 Kubernetes 集群版本高于 1.8.0。如果你才開始使用 Prometheus Operator,推薦你使用最新版。

組件

1. 必須的組件:

組件 功能描述
prometheus-operator 可以非常簡(jiǎn)單的在kubernetes集群中部署Prometheus服務(wù),并且提供對(duì)kubernetes集群的監(jiān)控,并且可以配置和管理prometheus
prometheus 監(jiān)控告警工具
alertmanager 用于接收 Prometheus 發(fā)送的告警信息,它支持豐富的告警通知渠道,而且很容易做到告警信息進(jìn)行去重,降噪,分組等,是一款前衛(wèi)的告警通知系統(tǒng)。
node-exporter 用于采集服務(wù)器層面的運(yùn)行指標(biāo),包括機(jī)器的loadavg、filesystem、meminfo等基礎(chǔ)監(jiān)控,類似于傳統(tǒng)主機(jī)監(jiān)控維度的zabbix-agent
kube-state-metrics 輪詢Kubernetes API,并將Kubernetes的結(jié)構(gòu)化信息轉(zhuǎn)換為metrics
grafana 用于大規(guī)模指標(biāo)數(shù)據(jù)的可視化展現(xiàn),是網(wǎng)絡(luò)架構(gòu)和應(yīng)用分析中最流行的時(shí)序數(shù)據(jù)展示工具

2.可選的組件:

組件 功能介紹
mysqld_exporter 監(jiān)控?cái)?shù)據(jù)庫(kù)的工具
redis_exporter 監(jiān)控redis的工具
cadvisor 監(jiān)控docker容器運(yùn)行狀態(tài)

安裝 Chart

通過(guò)安裝一個(gè)版本名為 my-release 的 chart:

helm install --name my-release c7n/prometheus-operator

這會(huì)在集群中安裝一個(gè)默認(rèn)配置的 prometheus-operator。這份配置文件列出了安裝過(guò)程中可以配置的選項(xiàng)。

默認(rèn)會(huì)安裝 Prometheus Operator, Alertmanager, Grafana。并且會(huì)抓取集群的基本信息
安裝部署后,通過(guò)value.yaml中配置的ingress的域名即可直接訪問(wèn)Grafana界面。查看指定集群的監(jiān)控信息

配置信息

下面列出 Prometheus Operator 常用可配置的參數(shù),其他配置參考官方文檔

  • 注:以下以replacement結(jié)尾的配置參數(shù) : 為唯一標(biāo)識(shí)采集數(shù)據(jù)的集群名稱(如:staging,uat)

3.Prometheus

參數(shù) 描述 必填
prometheus.ingress.hosts Prometheus 的域名(沒有做權(quán)限認(rèn)證,非必須暴露) true
prometheus.ingress.paths Prometheus 的 路徑 true
prometheus.prometheusSpec.storageSpec.volumeClaimTemplate.spec.storageClassName 指定集群中已經(jīng)創(chuàng)建的 storageClass(4.1進(jìn)行創(chuàng)建storageclass說(shuō)明) true
prometheus.serviceMonitor.relabelings 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true

4.Grafana

參數(shù) 描述 必填
grafana.adminPassword 登錄grafana UI的管理員密碼 true
grafana.ingress.hosts Grafana 的 域名 true
grafana.grafana.ini.server.root_url grafana自身的配置,即為grafana域名(如:http://grafana.staging.saas.hand-china.com) true
grafana.grafana.ini.auth.generic_oauth.auth_url 權(quán)限服務(wù)器授權(quán)地址(如:http://api.staging.saas.hand-china.com/oauth/oauth/authorize true
grafana.grafana.ini.auth.generic_oauth.token_url 權(quán)限服務(wù)器獲取token(如:http://api.staging.saas.hand-china.com/oauth/oauth/token true
grafana.grafana.ini.auth.generic_oauth.api_url 權(quán)限服務(wù)器api地址(如:http://api.staging.saas.hand-china.com/iam/v1/users/self true
grafana.persistence.storageClassName grafana 存儲(chǔ)定義,指定集群中已經(jīng)創(chuàng)建的 storageClass(4.1進(jìn)行創(chuàng)建storageclass說(shuō)明) true
grafana.serviceMonitor.relabelings grafana 實(shí)例收集的 relabel_configs 配置,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true

4.1創(chuàng)建storageClass需配置參數(shù)說(shuō)明

參數(shù) 描述 必填
storageClass.name 定義storageClass的名稱 true
persistence.nfsServer NFS 服務(wù)器IP(需要提前配置好 NFS 服務(wù)器,如:127.0.0.1) true
persistence.nfsPath 掛載文件夾路徑(如:/nfs-client-provisioner) true

5.Alertmanager

參數(shù) 描述 必填
alertmanager.ingress.hosts 設(shè)置Alertmanager 的域名(沒有做權(quán)限認(rèn)證,非必須暴露) true
alertmanager.ingress.paths 設(shè)置 Alertmanager 的 路徑 true
alertmanager.alertmanagerSpec.storage.volumeClaimTemplate.spec.storageClassName 指定集群中已經(jīng)創(chuàng)建的 storageClass(4.1進(jìn)行創(chuàng)建storageclass說(shuō)明) true
alertmanager.serviceMonitor.relabelings alertmanager 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true

6. Exports

參數(shù) 描述 必填
kubeApiServer.serviceMonitor.relabelings.replacement 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true
kubelet.serviceMonitor.relabelings 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true
kubelet.serviceMonitor.cAdvisorRelabelings 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true
kubeControllermanager.serviceMonitor.relabelings 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true
coreDns.serviceMonitor.relabelings 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true
kubeDns.serviceMonitor.relabelings 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true
kubeScheduler.serviceMonitor.relabelings 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名 (如:uat,staging) true
kubeProxy.serviceMonitor.relabelings 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true
kubeStateMetrics.serviceMonitor.relabelings 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true
nodeExporter.serviceMonitor.relabelings 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true
prometheusOperator.serviceMonitor.relabelings 實(shí)例收集的 relabel_configs,需要修改 cluster 標(biāo)簽的replacement 為目標(biāo)集群名(如:uat,staging) true
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容