转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。
最近在摸索新版本signoz怎么收集日志,官方文档的内容没有跟着版本更新或者说写得有些模糊不清,跟着文档走,根本行不通。
本文测试使用最新版了signoz-0.87.0版本,版本更新太快了,之前在测试搭建最新版开源监控平台SigNoz踩的坑时,最新版也就0.81.0,现在已经0.87.0版本了。
1. 收集signoz本机的docker容器日志
老版本在signoz启动之后,就会默认自动收集本机的容器日志,到目前官方文档也是这个说法:
但实际上,在signoz部署好之后,根本不会默认收集本机的docker日志。
官网提到的真正收集本机的日志的配置[tcplog/docker]在signoz-0.87.0/deploy/docker/generator/infra目录下:
这个目录的配置文件otel-collector-config.yaml会默认收集本机的主机、容器等相关指标到signoz。
在本目录下直接运行docker-compose -d,会启动2个容器:
这2个容器启动大约2、3分钟后,signoz首页能看到有数据源接进去了:
otel-collector-config.yaml中默认是屏蔽了signoz自身的日志收集的。为了测试日志收集,在本机启动一个nginx,访问一下,就能看到有日志生成了:
在浏览器访问一次nginx,signoz采集到了1条日志。在这里需要注意的是nginx其实在接入signoz之前已经测了很多次,有了很多条访问日志。但这里将日志成功接入signoz之后,不会采集之前的日志,只会从接入之后的日志开始采集。
点击日志,可查看日志详情:
2. 收集其它主机的容器日志
官方文档对于收集signoz之外主机的docker日志方案是这样的:
然而新版本并不存在文件docker-compose-minimal.yaml,且signoz-otel-collector并未监听2255端口。
真正监听2255端口的是在本文第一部分提到的signoz收集本机指标启动的otel-agent。
收集非signoz本机日志的步骤:
1)修改infra/docker-compose.yaml文件,添加2255端口映射:
然后重启服务:
docker-compose down
docker-compose up -d
2)在要上报日志的目标主机启动logspout容器:
docker run -d \
--net=host \
--rm --name="logspout"\
--volume=/var/run/docker.sock:/var/run/docker.sock\
gliderlabs/logspout\
syslog+tcp://10.0.0.101:2255
3)用目标主机启动的一个nginx做测试:
在web浏览器访问http://10.0.0.103:8081后,容器产生日志:
再行查看signoz的日志界面,已能看到刚刚的日志了:
docker日志总算可以解决收集问题了,其它问题,未完待续......