0
0

More than 3 years have passed since last update.

脱Excel Elastic Stack(docker-compose)でcsvログを分析・可視化 - PipelineFilterを[input/filter/output]の3ファイルに分割し、保守性と再利用性向上

Posted at

はじめに

どうも!生産技術部で製品の検査工程を担当しているエンジニアです。脱Excel Elastic Stack(docker-compose)でcsvログを分析・可視化 - Elastic Stackとはの続きになります。

対象読者

この記事では、Elastic Stackをそもそも知らない方、これから試そうと思っている方を対象としています。

この記事の内容

公式のブログに記載されていた保守性と再利用性にすぐれたLogstashパイプラインの作り方を実践してみました。パイプラインの数が増えても、メンテナンスできるように[input/filter/output]の3つのフォルダに分けました。

image.png

GitLabに設定ファイル一式を置いておきましたので参考にしてください。
リポジトリはこちら -> elastic-stack

分割方法

logstash.confをinput,filter,outputの3つに分割します。

logstash/pipeline/logstash.conf
input {
  beats {
    port => "5044"
  }
}

filter {
  csv {
    columns => ["Step","TestName","Value1","Judge"]
    separator => ","
  }
}

output {
  elasticsearch {
    hosts    => [ 'elasticsearch' ]
    index    => "%{[@metadata][beat]}-csv-%{+YYYY}-%{+MM}"
  }
}

以下の_in,_filter,_outに分割し、拡張子を.cfgとします。

logstash/pipeline/input/logstash_in.cfg
input {
  beats {
    port => "5044"
  }
}
logstash/pipeline/lfilter/ogstash_filter.cfg
filter {
  csv {
    columns => ["Step","TestName","Value1","Judge"]
    separator => ","
  }
}
logstash/pipeline/output/logstash_output.cfg
output {
  elasticsearch {
    hosts    => [ 'elasticsearch' ]
    index    => "%{[@metadata][beat]}-csv-%{+YYYY}-%{+MM}"
  }
}

docker-composeの設定

pipelineフォルダを丸ごとマウントします。

docker-compose.yml
logstash01:
    build: ./logstash
    container_name: logstash01
    links:
      - es01:elasticsearch
    volumes:
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
      - ./logstash/config/jvm.options:/usr/share/logstash/config/jvm.options
      - ./logstash/config/log4j2.properties:/usr/share/logstash/config/log4j2.properties
      - ./logstash/config/pipelines.yml:/usr/share/logstash/config/pipelines.yml
      - ./logstash/pipeline/:/usr/share/logstash/pipeline/
      - ./logstash/extra_patterns/date_jp:/opt/logstash/extra_patterns
    networks:
      - esnet

pipelineの設定

grob表現の{}を使ってpath.configに3つのファイルを設定します。[input/filter/output]のディレクトリに分けたため、以下のように記述します。

- pipeline.id: filebeat-processing
  path.config: "/usr/share/logstash/pipeline/{input/logstash_in,filter/logstash_filter,output/logstash_out}.cfg"

最後に

フィルタのみを変えたいシチュエーションなどでは、再利用性の面でもメリットがあると思いますが、今のところは恩恵を受けてないです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0