【发布时间】:2020-09-24 09:33:59
【问题描述】:
我正在使用 Sematext 监控一小部分 Docker 容器以及 Logsene 功能,以从一个运行 Node Express Web 应用程序的容器收集 Web 流量日志。
在我更新并重新启动 Web 服务器容器以引入新的代码构建之前,一切正常。此时,Sematext Logsene 似乎与容器分离,因此我丢失了监控中的 HTTP 日志跟踪。我仍然看到 Docker 事件,所以似乎只有日志部分被破坏了。
我正在“手动”运行 Sematext(即它不在我的 Docker Compose 中),如下所示:
sudo docker run -d --name sematext-agent --restart=always -e SPM_TOKEN=$SPM_TOKEN \
-e LOGSENE_TOKEN=$LOGSENE_TOKEN -v /:/rootfs:ro -v /var/run/docker.sock:/var/run/docker.sock \
sematext/sematext-agent-docker
然后我像这样更新我的应用程序:
docker-compose pull web && docker-compose up -d
其中web 是 Web 应用程序服务名称(在数据库、memcached 等中)
它会重新创建 Web 容器并重新启动它。
此时 Sematext 停止转发 HTTP 日志。
要修复它,我可以像这样重新启动 Sematext 代理:
docker restart sematext-agent
HTTP 日志再次开始到达他们的仪表板。
所以,我知道我可以将代理重启命令附加到我的发布脚本中,但我想知道是否有一种方法可以防止它首先被分离?我想这与它监视运行文件有关。
我搜索了他们的文档和常见问题解答,但没有找到任何关于这种效果的具体内容。
【问题讨论】:
标签: node.js docker express logging apm