MERK-Logstash構成
2320 ワード
概要
LogstashはShipperとIndexerの2つのキャラクターに分かれており、それぞれ異なる作業を行います.Shipper:clientにインストールされ、ログの収集と転送のみを担当します. Indexer:serverにインストールし、キュー(例えばredis)からログ、フィルタ、フォーマットなどを読み出し、Elasticsearchに格納する.
共通の構成
Logstashの仕事は、inputとoutputの2つのプラグインに関連しています.
Inputプラグイン
Inputプラグインは、ログファイルを抽出するために使用されます.一般的にfileプラグインを使用します.このプラグインでよく使われるパラメータは次のとおりです.path:ログファイルパス; type:名前は、後のfilterとoutputで異なるtypeに対して異なる処理を行うことができる. start_position:開始読取位置を指定し、「beginning」はファイルヘッダから、「end」はファイルヘッダから、 sincedb_path:Logstashは、各ファイルが読み込まれた場所を記録し、sincedbに保存します.Logstashが再起動すると、同じファイルに対して前回記録された場所からの読み込みが継続します.ファイルを再読み込みするにはsincedbファイル、sincedb_を削除する必要があります.pathは、ファイルのパスを指定します.便宜上、必要に応じて位置情報を保存しない「/dev/null」に設定できます.
outputプラグイン
outputプラグインは、ログを出力するために使用され、redis、標準出力、Elasticsearchなどのメッセージキューにデータを出力することができます.
Shipperの例
サーバリソースが多すぎないように、ログを直接転送する処理は行わないことをお勧めします.
sincedb_pathは前回ログを読み出した場所を記録していますが、これもBUGでしょう.サービスが再起動するとログが再ロードされ、logstashはsincedb_からpathで読み取ると、当然ログコンテンツは取得できませんが、ログコンテンツを取得するにはsincedb_を削除する必要があります.path.sincedb_パスはlogstash.ymlでの表示と構成、またはサービスの再起動時にログを再読み込みできるようにsincedb_を記録しないことができます.path値(sincedb_など)path=>「/dev/null」では、サービスが再起動されると、ログの読み取りが最初から開始されます.
Indexerの例
複数のファイルを書くことも、一緒に書くこともできます.ここでredisキューから読み込まれたログレコードは、フィルタリングやフォーマットは行われておらず、本番環境ではフィルタリングやフォーマットが必要であり、ログタイプによって異なるindexに書き込まれます.
LogstashはShipperとIndexerの2つのキャラクターに分かれており、それぞれ異なる作業を行います.
共通の構成
Logstashの仕事は、inputとoutputの2つのプラグインに関連しています.
Inputプラグイン
Inputプラグインは、ログファイルを抽出するために使用されます.一般的にfileプラグインを使用します.このプラグインでよく使われるパラメータは次のとおりです.
outputプラグイン
outputプラグインは、ログを出力するために使用され、redis、標準出力、Elasticsearchなどのメッセージキューにデータを出力することができます.
Shipperの例
サーバリソースが多すぎないように、ログを直接転送する処理は行わないことをお勧めします.
input{
file{
type => "redis"
path => "/var/redis/redis.log"
start_position => "beginning"
#sincedb_path => "/dev/null"
}
}
output{
if [type] == "redis"{
redis{
host => "127.0.0.1"
data_type => "list"
key => "redis"
db => 1
password => "123456"
}
}
}
sincedb_pathは前回ログを読み出した場所を記録していますが、これもBUGでしょう.サービスが再起動するとログが再ロードされ、logstashはsincedb_からpathで読み取ると、当然ログコンテンツは取得できませんが、ログコンテンツを取得するにはsincedb_を削除する必要があります.path.sincedb_パスはlogstash.ymlでの表示と構成、またはサービスの再起動時にログを再読み込みできるようにsincedb_を記録しないことができます.path値(sincedb_など)path=>「/dev/null」では、サービスが再起動されると、ログの読み取りが最初から開始されます.
Indexerの例
input{
redis{
type => "redis"
host => "127.0.0.1"
data_type => "list"
key => "redis"
db => 1
password => "123456"
}
}
output{
if [type] == "redis"{
elasticsearch{
hosts => "10.16.4.56"
index => "redis-%{+YYYY-MM-dd}"
}
}
}
複数のファイルを書くことも、一緒に書くこともできます.ここでredisキューから読み込まれたログレコードは、フィルタリングやフォーマットは行われておらず、本番環境ではフィルタリングやフォーマットが必要であり、ログタイプによって異なるindexに書き込まれます.