2017-11-22 3 views
0

logstashを使用して、実行中のアプリケーションからlogz.ioにstdoutを配信したいとします。 Applicationとlogstashは、docker-composeによって管理されているドッカーイメージで、セットアップ(プルイメージ、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に出荷するフィルタを必要としません。入力を追加して出荷するだけです!

関連する問題