中國建設(shè)銀行個人網(wǎng)站登錄seo自學(xué)網(wǎng)官方
1、監(jiān)控
監(jiān)控類型
- 資源監(jiān)控:cpu、內(nèi)存、網(wǎng)絡(luò)等。
- 性能監(jiān)控:apm監(jiān)控,一般是通過一些 Hook 的機(jī)制在,在虛擬機(jī)層、字節(jié)碼執(zhí)行層通過隱式調(diào)用,或者是在應(yīng)用層顯示注入,獲取更深層次的一個監(jiān)控指標(biāo),一般是用來應(yīng)用的調(diào)優(yōu)和診斷的。
- 安全監(jiān)控:對安全進(jìn)行的一系列的監(jiān)控策略,類似像越權(quán)管理、安全漏洞掃描等。
- 事件監(jiān)控:normal的事件變成-warning事件
Heapster
- 每一個 Kubernetes 節(jié)點上有一個 cadvisor,是負(fù)責(zé)數(shù)據(jù)采集的組件。當(dāng) cadvisor 把數(shù)據(jù)采集完成,Kubernetes 會把 cadvisor 采集到的數(shù)據(jù)進(jìn)行包裹,暴露成相應(yīng)的 API。以下是三種API接口
- summary接口
- kubelet接口
- Prometheus接口
- Heapster支持summary和kubelet接口,定期去節(jié)點拉取數(shù)據(jù),然后暴露成service。
- k8s的dashboard或者h(yuǎn)pa-controller獲取到監(jiān)控數(shù)據(jù),實現(xiàn)相對應(yīng)的彈性收縮等。
metrics-service取代了Heapster
- 需要采集更多其他的資源信息,但Heapster的可擴(kuò)展性有限
- Heapster為了保證數(shù)據(jù)的離線能力,提供了很多sink,后期這些缺乏維護(hù),導(dǎo)致Heapster項目出現(xiàn)了很多問題
- Metrics-Server 的核心產(chǎn)生原因是為了實現(xiàn)監(jiān)控接口的標(biāo)準(zhǔn)化。
Metrics-Service內(nèi)部組成
- core
- source
- API
- API Registration:將相應(yīng)的數(shù)據(jù)接口注冊到k8s的API Server。用戶通過API server訪問API注冊層,再到metrics-server
k8s監(jiān)控接口標(biāo)準(zhǔn)
- resource metrice:資源監(jiān)控,包含節(jié)點、pod、namespace、class,通過metrics.k8s.io接口獲取到
- custom metrics:通過custom.metrics.k8s.io接口獲取到,主要實現(xiàn)的Prometheus,提供的是資源監(jiān)控和自定義監(jiān)控(應(yīng)用層自己定義,然后通過標(biāo)準(zhǔn)的Prometheus的client,暴露出相應(yīng)的metrics,且被Prometheus采集)
- External metrics:獲取云產(chǎn)品的監(jiān)控指標(biāo)
Promethues
-
很多開源項目以Prometheus作為監(jiān)控標(biāo)準(zhǔn)
-
針對數(shù)據(jù)庫和中間件,有對應(yīng)的Prometheus采集客戶端,比如說etcd、zookeeper、mysql和postgresql
-
數(shù)據(jù)采集鏈路
- push到gateway,Prometheus通過pull拉取數(shù)據(jù),防止短時間數(shù)據(jù)業(yè)務(wù)漏采。因為pull有周期,如果周期時間大于任務(wù)運(yùn)行時間,單純直接從任務(wù)上pull會遺失數(shù)據(jù)
- 標(biāo)準(zhǔn)pull,直接去對應(yīng)的數(shù)據(jù)任務(wù)上拉取數(shù)據(jù)
- Prometheus之間的數(shù)據(jù)同步
-
數(shù)據(jù)源配置
- 標(biāo)準(zhǔn)的靜態(tài)配置
- 支持service discovery【配置annotation】
-
Operator:Prometheus Operator 可能是目前所有 Operator 里面做的最復(fù)雜的,但是它里面也是把 Prometheus 這種動態(tài)能力做到淋漓盡致的一個 Operator,如果在 K8s 里面使用 Prometheus,比較推薦使用 Prometheus Operator 的方式來去進(jìn)行部署和運(yùn)維。
2、日志
日志
- 主機(jī)內(nèi)核的日志
- 網(wǎng)棧的異常: iptables mark
- 驅(qū)動異常的日志
- 文件系統(tǒng)異常日志
- 節(jié)點異常,kernel panic 或者oom(out of memory)
- Runtime的日志
- Docker的一些日志,排查類似像刪除pod hang的問題
- 核心組件的日志
- 外置的中間件:數(shù)據(jù)庫etcd、網(wǎng)絡(luò)Ingress
- 內(nèi)置的組件:API server、kube-scheduler、controller-manager、kubelet
- 應(yīng)用日志
- 宿主機(jī)文件:日志文件寫到宿主機(jī),通過宿主機(jī)的日志輪轉(zhuǎn)的策略進(jìn)行日志的輪轉(zhuǎn),通過宿主機(jī)的agent進(jìn)行采集
- 容器內(nèi)文件:通過sidecar的streaming的container,轉(zhuǎn)寫到stdout,通過stdout寫到相應(yīng)的log-file,然后通過本地的日志輪轉(zhuǎn),以及外部的agent采集
- 容器標(biāo)準(zhǔn)/錯誤輸出:agent采集stdout或者API獲取數(shù)據(jù)
- 舉例
- Fluentd在每個節(jié)點上起一個agent,agent會將數(shù)據(jù)匯聚到fluentd的server,server可以把數(shù)據(jù)離線到es,通過kibana展示