记一次生产环境的轻量级资源监控(自用)

资源监控产品比较成熟,例如zabbix,可以做资源监控、日志监控等,但真实生产环境由于各种原因,导致需要使用轻量级的资源监控。

1. 背景

1)笔者的项目,服务涉及到多个子系统,其中有10个子系统部署公司的K8S服务中,另一部分需要部署在物理机上。
2)公司的K8S服务支持对容器进行资源监控,并直接告警到企业微信中,不需要我们额外开发进行工作。
3)物理机资源监控、日志监控,需要找相关部门进行开通,并且告警只能通过短信告警,且所有级别的告警都需要发送给部门领导,且短信发送人员数量有限制(1人),防止成本高。
4)物理机我们有很多项指标需要监控,并不只是完成公司系统监控的强制要求,这样也会有很多告警,总是抄送领导也是不方便,而且我们希望告警到企业微信群。加上需要提工单,过审核、后续增加物理机也需要继续开工单,实在是有点复杂。

2. 实现思路

1)部署agent服务端在K8S服务中,agent部署在每个物理机,agent server 定时发送获取服务器资源请求,agent则负责获取服务器CPU、内存资源。这种方式是因为我们已经开通K8S到物理机的服务端口,不用再提交工单(看我们是多惧怕开工单)。
2)每个agent可以指定监控指定的日志路径,每台物理机上系统的日志路径不同,提取的错误关键字不同,可以在agent服务端下发日志路径、以及需要匹配的字段(正则表达式),也可以直接在agent侧进行配置。
3)实现原则是agent、agent server都要很简单,以防过于复杂引入其他Bug,就得不偿失。而且如果实现很复杂,占用太多工时,一定会有人问 为什么不介入公司的监控告警服务,而且要自己实现。我们自己偷摸使用,图自己使用方便。

上面的实现使用golang,agent、agent server加一起也不用200行,花了半天开发,一小时验证、一小时上线,完美,突出一个简单,只要能满足我们需求就好,不需要考虑足够的兼容性、扩展性。

猜你喜欢

转载自blog.csdn.net/xjmtxwd24/article/details/131586156