在最新的实习公司,在线上服务崩溃的情况下需要我去收集日志,在ELK里面人肉找日志是个很痛苦的事情,以及在容器里面的日志,虽然挂在外面,但是崩溃不一定有具体信息,所以我突然想是否可以开发一个趁手的软件,帮我定时自动化收集和过滤日志,顺带解决域控里面的账号清理。所以就有了这个软件。语言就用的Golang,这是近半年来我接触得最多得,在AI生成代码后我review最方便,并且Golang不需要太多依赖。当然,这个程序只在我的虚拟机模拟平台跑过,所有情况都在最理想的情况下。
里面有几个技术点思路可以写在博客中,供许久以后的我回顾是否解决方法正确。
交换机有并发连接数限制,同时来几十个 SSH 会话,设备可能扛不住。用Worker Pool,限制最大并发数。
在IT服务经常遇到域账号被锁的,所以我尝试加了一个检测域账号状态的句子。
func isLocked(uac int) bool { return uac&0x0010 != 0 }
ELK中ES查询使用的
bool query + terms filter,限定时间窗口。对日志消息从级别进行切片为““FATAL > ERROR > WARN > INFO > DEBUG > TRACE”。然后添加了一个警告去重。
大概就是这么多,得益于AI,让这个程序一个星期就在我的虚拟机上跑起来了。
程序附件如下:
原创
基于Golang的自动化运维监控软件
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法