2017-11-22 14 views
0

logstash를 사용하여 실행중인 응용 프로그램에서 logz.io로 stdout을 보내고 싶습니다. 응용 프로그램과 logstash는 docker-compose가 관리하는 docker 이미지로 설정 (이미지 풀, network_mode, 로깅 드라이버 등)을 수행합니다. Logstash 입력은 gelf-input-plugin을 통해 처리됩니다. logz.io 로의 배송은 tcp-output-plugin을 통해 처리됩니다.Logstash : logz.io에 프록시를 통해 로그 전달

logstash.conf : 고정 표시기 - compose.yml에서

input { gelf { 
      type => docker 
      port => 12201 } } 

filter { mutate { add_field => { "token" => "${LOGZIOTOKEN}" } } } 

output { tcp { 
      host => "listener.logz.io" 
      port => 5050 
      codec => json_lines } } 

발췌 : 예상대로

application: 
    ... 
logging: 
    driver: "gelf" 
    options: 
    gelf-address: "udp://0.0.0.0:12201" 

이 작동합니다.

이제 호스트 (logstash 인스턴스 실행)에서 logz.io로 로그를 전송하는 데 사용해야하는 TCP 프록시 서버가 있습니다. 불행히도 logstashs tcp-output-plugin을위한 프록시 확장을 찾지 못했습니다. 누구든지이 문제에 대한 제안이 있습니까?

답변

0

logstash의 http 출력 플러그인에는 proxy 속성이 있습니다. curl : 8070 (http)/8071 (https)과 함께 배송하려면 logz.io 포트를 사용해야합니다.

실제로 동작하는 설정은 다음과 같습니다

output { http { 
     url => "https://listener.logz.io:8071?token=${LOGZIOTOKEN}" 
     http_method => "post" 
     format => "json" 
     content_type => "application/json" 
     proxy => { 
      host => "${PROXYHOST}" 
      port => "${PROXYPORT}" 
      scheme => 'http' 
      user => "${PROXYUSER}" 
      password => "${PROXYPW}" 
     }}} 

당신은 TCP-출력 플러그인 설정처럼 logz.io을 제공하기 위해 필터가 필요하지 않습니다. 그냥 입력을 추가하고 우주선!