2017-01-06 2 views
2

私はSEBP/ELK Docker containerを使用しています。これは、アプリケーションログの設定に最も適しているようです。残念ながら、the docsを読み取った後には、Filebeatを使用せずに兄弟コンテナからログを取得する簡単な方法はないようです。Dockerコンテナから(ファイルビートなしで)ELKコンテナにログを送信します。

それぞれのコンテナにFilebeatをインストールする必要はありません。これは、Dockerの職務義務の分離に直接関係するように思われるからです。

TLDR;アプリケーションコンテナからELKコンテナへのログを取得するにはどうすればよいですか?

+0

私はあなたの考えを理解するかもしれません。私はELKイメージを作成しました。ログアウト '' 'https:// github.com/nguoianphu/docker-elk/blob/master/logstash.conf'''でファイル入力を有効にしようとすると、ファイルをマウントできますドッカーボリュームのパス。 – Tuan

答えて

1

SEBP/ELKはこの問題に取り組むには間違ったツールでした。代わりに、ELKスタックの各要素(Elasticsearch、Logstash、Kibana)のコンテナを回転させるプロジェクトを使用していたはずです。私はGitHubでそのようなリポジトリを見つけました。

プロジェクトdeviantony/docker-elkプロジェクトでは、3つのELK要素がコンテナの作業セットに結合されています。これについての素晴らしい点は、SEBP/ELKプロジェクトとは異なり、deviantony/docker-elkは、どの機能が利用可能であり、何が閉鎖されるべきであるかについての意見がありません。 SEBP/ELKプロジェクトでは、ポート5000に書き込む機能が削除され、カスタムlogstash.confファイルを使用して追加しようとすると、UDPリスナーは最終的に失敗します。逆に、deviantony/docker-elkプロジェクトはうまく動作します。

ボーナスポイント:このプロジェクトには、最低限のセキュリティレイヤを追加するX-Packが含まれています。

1

filebeatを各容器に使用すると、Dockerの哲学に反します。それはリソースの無駄になり、管理オーバーヘッドが増えます。

logstashでローカルログファイルを使用できます。

例の設定:

input { 
    file { 
    path => "/var/log/apache.log" 
    type => "apache-access" # a type to identify those logs (will need this later) 
    start_position => "beginning" 
    } 
} 

今、私たちは、ログがlogstashコンテナにローカルファイルを作成する必要があります。

あなたがbind mountsを使用している場合は、logstashコンテナ内の同じディレクトリをマウントすることができます。あなたがvolumesを使用している場合

sudo docker run -d -v /path/to/logs/:/path/to/logs/in/container logstash 

あなたもlogstashするログを含む同じボリュームをマウントすることができます。

sudo docker run -d -v logvol:/path/to/logs/in/container logstash 
関連する問題