我非常接近得到它,但担心我花了太长时间看这个并且迷失了如何实现我想要的东西。
我正在尝试做的事情:
从我的服务器获取访问日志,解析输出并将其提供给matomo原木进口商,因此它正在“实时”导入日志。本质上,web server -> log -> parse -> matomo log importer
我做了什么:
我可以用 tail 解析 access.log 的输出杰克像这样:
tail -f /var/log/access.log | jq --compact-output '{ip: (.request.remote_addr | .[:-6]), host: .request.host, path: .request.uri, status: "\(.status)", referrer: "", user_agent: .request.headers."User-Agent"[], length: .size, generation_time_milli: .duration, date: (.ts | strftime("%Y-%m-%dT%H:%M:%S%z"))}'
这给了我JSON
matomo 日志导入器的格式明白。然后我有一个需要读取日志并导入它的脚本。
#!/bin/sh
echo "${@}" | python3 ./import_logs3.py \
--url=https://location --token-auth={TOKEN} \
--enable-http-errors --enable-http-redirects --enable-static --enable-bots \
--idsite=1 --recorders=4 --log-format-name=nginx_json {FILE}
这就是我陷入困境的地方,因为脚本需要处理一个文件,并在解析它后完成。我希望脚本无限期地运行,以便日志“实时”导入。这些示例使用诸如系统日志每次日志文件更新时都会执行该脚本。
我将如何去做类似的事情?利用tee
?如果我tee
访问一个文件,每次更新时如何执行指向该文件的脚本?
谢谢你的帮助!