Unicorn 출력을 Logstash-Forwarder로 파이프

Unicorn 출력을 Logstash-Forwarder로 파이프

logstash-forwarderCapistrano와 함께 배포하는 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-forwarderCapistrano에게 다음 명령을 실행하라고 지시했습니다.

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-forwarderstdin

답변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으로 보내는 방법을 설명합니다. 명명된 파이프의 경우 동일해야 합니다.

도움이 되었기를 바랍니다!

관련 정보