小编ada*_*czi的帖子

从我的服务中更快地获取 systemd 服务日志

我有一个 systemd 服务定义如下,它工作正常:

[Unit]
Description=my service
After=network.target

[Service]
User=myuser
Group=mygroup
WorkingDirectory=/home/myuser/myapp
Environment="PATH=/home/myuser/myapp/.venv/bin"
ExecStart=/home/myuser/myapp/.venv/bin/python3 /home/myuser/myapp/run.py
Restart=on-failure

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

这是一个基于 Flask 框架的 Python Web 应用程序。通常在应用程序的标准输出中,我可以看到传入的请求“实时”,我的意思是当我像python run.py.

现在启动服务后,我想跟踪应用程序的日志,我这样做:

sudo journalctl -f -u my_app.service
Run Code Online (Sandbox Code Playgroud)

并且传入的日志非常慢 - 有时它们需要几分钟或更长时间才能出现在日志中。之后它们都有适当的时间戳,所以它们并不是消失了,它们确实消失了,而是经过了很长时间。

我试过的:

  • 将 systemd 服务输出重定向到文件:

    StandardOutput=file:/var/log/my_app/output.log

    StandardError=file:/var/log/my_app/error.log

    运气不好 - 他们保存得很好,但速度一样慢

  • 尝试将 journalctl 日志转储到离线更快的设置SyncIntervalSec从默认5m5s- 也没有帮助

有什么方法可以更快地将这些日志从我的应用程序传递到 journald?我在使用其他服务(例如系统身份验证服务)时没有问题 - 我可以立即看到记录。我的journald.conf文件有默认参数(除了上面的一个),我的 systemd 是版本 237,我运行的是 Ubuntu 18.04。

logs systemd journalctl systemd-journald

5
推荐指数
1
解决办法
2504
查看次数

Bash 在特定传入请求后显示乱码

我设置了一个新的基本 Linux 服务器(在本例中为 CentOS),仅用于测试目的。在那里,没有任何防火墙,我正在运行 Python Web 应用程序。基本上,我python run.py在前台输入并让应用程序运行,而应用程序本身在类似 的某个端口上运行8080,因此在 Web 浏览器中,我只需输入my_public_ip_addr:8080并使用它就好了。所有这一切都通过我的笔记本电脑上的 SSH 发生。

现在,我让我的笔记本电脑打开了一段时间,当我回来时,外壳显示如下内容:

83.20.238.86 - - [13/Mar/2019 08:54:43] "GET / HTTP/1.1" 200 -
87.122.83.97 - - [13/Mar/2019 11:55:30] "GET / HTTP/1.1" 200 -
176.32.33.145 - - [13/Mar/2019 12:08:36] "GET / HTTP/1.1" 200 -
176.32.33.145 - - [13/Mar/2019 12:08:36] code 400, message Bad request syntax ('\x16\x03\x01\x00\xfc\x01\x00\x00\xf8\x03\x03(\xd3FM\xf5\x0eLo\x17\xa3|\x1f8\xca~#\x07\xc1\x1f&&\x14\x19\x11\x10:\x824\xd23nA\x00\x00\x8c\xc00\xc0,\xc02\xc0.\xc0/\xc0+\xc01\xc0-\x00\xa5\x00\xa3\x00\xa1\x00\x9f\x00\xa4\x00\xa2\x00\xa0\x00\x9e\xc0(\xc0$\xc0\x14\xc0')
176.32.33.145 - - [13/Mar/2019 12:08:36] "??(M?L???8#?&&:?4?A??????2???/???1???????????(?$??" 4?? ?
176?32?33?145 ? ? [13/M??/2?19 14:55:55] "GET / HTTP/1?1" 2?? ? …
Run Code Online (Sandbox Code Playgroud)

bash string http

1
推荐指数
1
解决办法
261
查看次数

标签 统计

bash ×1

http ×1

journalctl ×1

logs ×1

string ×1

systemd ×1

systemd-journald ×1