随着云原生技术的快速发展,很多企业应用都上云,使用了容器运行一些常规应用。那么只要是应用,不管是以什么方式运行,是免不了存在问题导致应用无法正常运行。这时,作为一线开发运维人员,第一个想到的应该就是查看日志,查找应用出现问题的原因,分析原理,然后进行快速解决,避免长时间影响业务。
当然一般的日志收集,我们现在已经有很多方案,利用shell脚本、ELK+filebeat、loki等等
但是怎么收集容器日志呢,最简便的目前实际应用不错的是loki,通过简单安装,即可收集到容器相关日志,并且通过grafana展示也是很友好的
目标:收集docker错误日志,并发送到企微群中提醒相关人员
日志级别:ERROR
再来说说日志级别
为啥有级别,因为代码在运行的时候出现的状况是不一致,有报错,有警告,也有调试的信息,对这些进行分级管理就会更快速更准确的定位到问题的所在
一般是这样的CRITICALERRORWARNINGINFODEBUG
CRITICAL代表问题很严重,不能继续运行了
ERROR就是有错误问题,还能运行但是有些功能已经不能工作
WARNING就是提示告警,注意有一些问题会意外发生或者未来会出问题
INFO就是运行的正常信息,表示正常运作
DEBUG就是一些调试的信息,这里还是比较详细的部分
分析:
docker应用不多的情况下,如何获取docker日志,然后将日志中的错误信息发送到指定企微群里呢。
首先想一想,docker应用是怎么查看日志的,一句命令dockerlogs-fdockername
那么这是实时查看,也可以指定最后几百行加上--tail=行数即可,或者最近三十分钟--since=30m,还有直接execdocker-itbash在/var/log下面查看日志
总之,一条命令能看到,可以利用这个命令,然后可以使用grep命令来筛选包含错误ERROR字段的日志
但是我需要把筛选到的日志发送到企微,那就需要把看到的日志写入文件发送文本或者文件到企微即可。
思路有了就可以编写脚本了
首先导入需要的模块,时间,系统操作,以及接口调用
为了记录脚本执行时间,可以打印当前时间,并将日志命名加入当前的时间
这就是将docker的log,通过grep筛选过后写入一个log文件内,用来发送到企微
有了日志,怎么发送到企微呢
上面这一段就是将日志文件,通过调用企微群机器人发送文件,企微官方也给了通用的模板,大家可以上