作者
黃雷,騰訊云高級工程師,曾負責構建騰訊云云監控新一代多維業務監控系統,擅長大規模分布式監控系統設計,對 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地址)
教材目錄如下


【騰訊云原生】云說新品、云研新術、云游新活、云賞資訊,掃碼關注同名公眾號,及時獲取更多干貨!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/399492.html
標籤:其他
上一篇:布隆過濾器

