我原本只有一台服务器。它把CPU、错误率等指标发送到我的监控面板上,一切正常。
后来我增加了更多服务器——同一个服务,现在跑在4到5台机器上。
打开网易新闻 查看精彩图片
所有机器产生的指标都显示在同一个面板上,但无法分辨哪条指标来自哪台机器。如果CPU飙升,我无法判断是服务器1还是服务器4出了问题。如果错误率上升,同样的问题。
当系统出故障时,这种情况毫无用处。“出问题了”这句话没有帮助——我需要的是“服务器3出问题了”。
每台服务器本应给自己的指标打上名称标签,比如标明“这条指标来自server-3”。
我确实设置了一个配置值,目的就是实现这一点。但当我检查时,发现这个名称从未真正到达发送指标的代码中。设置存在于配置文件中,但它没有像我假设的那样进入运行中的程序。
于是,每台服务器都在静默地发送指标,要么没有附带名称,要么用的是同一个默认名称。没有报错,没有警告。它就这样悄无声息地不工作了。
我没有继续指望配置文件里的设置能“自动生效”并到达正确的位置,而是把它改成了显式传递。
我通过事后查看面板中的实际指标,确认每台服务器的名称都正确显示,以此验证修改生效了。
如果你的应用依赖某个设置通过自动配置加载的“魔法”来“自动生效”,请仔细检查它是否真的到达了你认为它该去的地方。不要假设,去查看。
另外,在从1台服务器扩展到多台之前,确保你能在监控中区分它们——不要等到真正出问题的时候,凌晨2点,却不知道该看哪台机器。
热门跟贴