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)。
- prometheus-operator
- prometheus
- alertmanager
- node-exporter
- kube-state-metrics
- grafana
- 收集 Kubernetes 內(nèi)部組件指標(biāo)的監(jiān)控服務(wù)
- kube-apiserver
- kube-scheduler
- kube-controller-manager
- etcd
- kube-dns/coredns
- kube-proxy
基礎(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 |