거의 거의 다 얻었지만, 이것을 보는 데 너무 오랜 시간을 소비하여 원하는 것을 달성하는 방법을 잃어버릴까 봐 걱정됩니다.
내가 하려는 일:
내 서버에서 액세스 로그를 가져오고 출력을 구문 분석하여 피드에 제공합니다.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
파일에 액세스하는 경우 파일이 업데이트될 때마다 해당 파일을 가리키는 스크립트를 어떻게 실행합니까?
도와주셔서 감사합니다!