logstash-forwarder
Capistrano와 함께 배포하는 Rails 앱과 함께 DigitalOcean Ubuntu 드롭릿에 설치했습니다 . logstash-forwarder
할 수 있기 때문에 설치되어 있다는 것을 알고 있습니다 sudo service logstash-forwarder restart
.
다음 구성을 사용하여 logstash-forwarder
읽도록 구성했습니다 .stdin
{
"network": {
"servers": [ "<my logstash server>:5000" ],
"timeout": 15,
"ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt"
},
"files": [
{
"paths": [
"/var/log/syslog",
"/var/log/auth.log"
],
"fields": { "type": "syslog" }
}, {
"paths": [ "-" ],
"fields": { "type": "stdin" }
}
]
}
stdout
...그리고 디스크에 쓰는 대신 모든 로그를 보내도록 Rails를 구성했습니다 . 바이너리 가 어디에 있는지 정확히 알지 못해서 logstash-forwarder
Capistrano에게 다음 명령을 실행하라고 지시했습니다.
RBENV_ROOT=/usr/local/rbenv RBENV_VERSION=2.1.4 /usr/bin/env sudo /etc/init.d/unicorn_oddjob_production restart | /opt/logstash-forwarder/bin/logstash-forwarder
…그러나 다음과 같은 경우에는 실패합니다.
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as [email protected]: sudo exit status: 127
sudo stdout: Nothing written
sudo stderr: bash: /opt/logstash-forwarder/bin/logstash-forwarder: No such file or directory
…
나는 이 모든 것에 아주 익숙하지 않기 때문에 내가 어디로 잘못 가고 있는지 잘 모르겠습니다. 그렇다면 을(를) unicorn
에게 stdout
어떻게 보낼 수 있나요 ?logstash-forwarder
stdin
답변1
보기에는 logstash-forwarder
원격 시스템에서 예상했던 위치가 아닙니다. 오류 메시지를 참조하십시오.
sudo stderr: bash: /opt/logstash-forwarder/bin/logstash-forwarder: No such file or directory
또한 이 문제가 해결되면 해당 restart
옵션을 사용하여 데몬을 다시 시작해도 예상한 대로 작동할지 확신할 수 없습니다. 프로세스 unicorn_oddjob_production
는 현재 유니콘을 중지하고 새 복사본을 생성한 후에 종료됩니다. 이런 일이 발생하면 파이프가 닫히고 Logstash-Forwarder가 종료됩니다.
에 대한 전문가가 아니더라도 unicorn
명명된 파이프에 대한 로깅을 설정하고 logstash-forwarder
그 내용을 읽었을 것입니다. 제발, 참조이 예. 출력을 STDOUT으로 보내는 방법을 설명합니다. 명명된 파이프의 경우 동일해야 합니다.
도움이 되었기를 바랍니다!