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の例
    サーバリソースが多すぎないように、ログを直接転送する処理は行わないことをお勧めします.
    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に書き込まれます.