摘要:博客挂了 6 个小时,全靠同事打电话才知道——这就是没有监控的代价。这篇用「凌晨三点的电话」开头,讲清监控的四个环节(采集 / 存储 / 展示 / 告警)分别对应哪个工具、一条指标长什么样、Counter 和 Gauge 的区别,以及 Prometheus 为什么坚持用「拉取」而不是「推送」。
承接上篇:博客部署项目完结。今天开始第二个项目——监控告警。
一、凌晨三点的电话
周一早上,小林刚到工位,老周端着保温杯走过来,脸色不太好看。
「你周末干嘛了?」
「打游戏啊,怎么了?」
「你博客,周一凌晨挂了。」
小林一愣:「挂了?我周日还访问了啊。」
「你周日几点访问的?」
「下午吧……」
「对。周一凌晨 2 点到早上 8 点,你博客挂了 6 个小时。周一早上同事想看你的文章,打不开,打电话问我。」
小林脸色变了:「那……那怎么没人告诉我?」
「你博客会自己打电话吗?」老周问。
「不会。」
「那你怎么知道它挂了?」
小林想了想:「用户投诉?」
「对。但用户投诉的时候,已经晚了。你博客挂了 6 个小时,没人知道——这就是没有监控的后果。」
二、监控是什么?
「你觉得监控是什么?」
「就是……看服务器有没有挂?」
「对了一半。」老周说,「监控不只是『看挂没挂』,而是『持续地看,并且在你没看的时候,帮你看着』。你不可能 24 小时盯着屏幕,但监控可以。」
监控的四个环节
① 采集数据
服务器现在的 CPU、内存、磁盘、服务状态——这些数据叫指标(metric)。采集指标的工具叫exporter。
② 存储数据
采集到的数据得存起来,不然你只能看到「现在」,看不到「过去」。存指标的工具叫Prometheus。
③ 展示数据
存了数据得能看到。用图表展示,一目了然。展示工具叫Grafana。
④ 告警
数据异常,得通知你。通知工具叫Alertmanager。
「采集、存储、展示、告警——这就是监控的四个环节。记住了,以后面试被问到,直接说这四个。」
Prometheus 是中枢。exporter 把数据给它,Grafana 从它那拿数据,Alertmanager 也从它那拿数据。所以你先学