光速從0到1掌握Prometheus和Grafana,騰訊雲專家5萬字精華教程免費送

騰訊雲原生發表於2021-12-31

作者

黃雷,騰訊雲高階工程師,曾負責構建騰訊云云監控新一代多維業務監控系統,擅長大規模分散式監控系統設計,對 golang 後臺專案架構設計有較深理解,後加入TKE團隊,致力於研究 Kubernetes 相關運維技術,擁有多年 Kubernetes 叢集聯邦運維管理經驗,目前在團隊主要負責大規模叢集聯邦可觀測性提升,主導研發了騰訊雲萬級 Kubernetes 叢集監控告警系統,智慧巡檢與風險探測系統。

摘要

如果問筆者,在管理 Kubernetes 叢集的時候,有什麼開源元件是一定會用的,那筆者覺得 Prometheus 一定會是其中之一。Prometheus 擁有強勁的效能,活躍的生態,便捷的部署方式,還有靈活的 PromQL,特別適合用於 Kubernetes 場景下的 master,節點,應用等各個層級的監控資料採集和聚合,再配合炫麗的 Grafana 皮膚(如下圖),可謂是雲原生監控的最佳方案。

固然 Prometheus 和 Grafana 十分強大,但是剛接觸的時候,還是有一定的學習成本,不易上手,這點筆者特別有感觸。記得幾年前筆者還未負責團隊雲原生可觀測性提升的時候,就經常聽到邊上一剛接觸 Prometheus 的哥們成天和筆者吐槽,“哎,Prometheus 的語法怎麼這麼複雜”,“這東西太噁心了,這怎麼寫啊”。當時筆者還嘲笑他誇張,但當我也開始學習 Prometheus,開始配 Grafana 皮膚的時候,也發出過一樣的吐槽聲,例如下邊的語句。

 max(label_replace(
 label_replace(
 label_replace(
 kube_deployment_status_replicas_unavailable,
 "workload_kind","Deployment","","")
 ,"workload_name","$1","deployment","(.*)"),
 "__name__", "k8s_workload_abnormal", "__name__","(.*)")
 )
 by (namespace, workload_name, workload_kind,__name__)
 or on (namespace,workload_name,workload_kind, __name__) max(label_replace(
 label_replace(
 label_replace(
 kube_daemonset_status_number_unavailable,
 "workload_kind","DaemonSet","","")
 ,"workload_name","$1","daemonset","(.*)"),
 "__name__", "k8s_workload_abnormal", "__name__","(.*)") ) by (namespace, workload_name, workload_kind,__name__)
 or on (namespace,workload_name,workload_kind, __name__)
 max(label_replace(
 label_replace(
 label_replace(
 (kube_statefulset_replicas - kube_statefulset_status_replicas_ready),
 "workload_kind","StatefulSet","","")
 ,"workload_name","$1","statefulset","(.*)"),
 "__name__", "k8s_workload_abnormal", "__name__","(.*)") ) by (namespace, workload_name, workload_kind,__name__)
 or on (namespace,workload_name,workload_kind, __name__)
 max(label_replace(
 label_replace(
 label_replace(
 (kube_job_status_failed),
 "workload_kind","Job","","")
 ,"workload_name","$1","job_name","(.*)"),
 "__name__", "k8s_workload_abnormal", "__name__","(.*)") ) by (namespace, workload_name, workload_kind,__name__)
 or on (namespace,workload_name,workload_kind, __name__)
 max(label_replace(
 label_replace(
 label_replace(
 (kube_cronjob_info * 0),
 "workload_kind","CronJob","","")
 ,"workload_name","","cronjob","(.*)"),
 "__name__", "k8s_workload_abnormal", "__name__","(.*)") ) by (namespace, workload_name, workload_kind,__name__)

筆者這幾年在使用 Prometheus 的過程中積累了一定實踐經驗,也踩了不少坑。

為了讓想要學習 Prometheus 的讀者朋友更加快速的入門,少走彎路,提升雲原生時代業務監控技能。

筆者整理並總結了一版教程,包括一些最基本,最核心的概念,技巧以及最佳實踐分享給大家,讓大家用 20% 的時間掌握 80% 最常用的部分。

學會如何從零開始給自己的業務暴露監控指標,如何正確配置服務發現,以及如何配出實用的 Grafana 皮膚,帶領讀者光速入門 Prometheus+Grafana,掌握雲原生監控的正確姿勢。圖片

「騰訊雲原生」公眾號後臺回覆“ Prometheus”或“光速入門”即可獲取教程!一起學起來吧!

小Tips:教材目前有網站版本(需在瀏覽器中開啟)和PDF版本,童鞋們可根據自身需求進行檢視。本教材網站版本會持續進行更新,大家可以持續關注~

同時歡迎大家給教程提issue, 此教程會根據大家的反饋不定時更新,擴充套件,修訂!

(提issue的GitHub地址)

教材目錄如下

相關文章