#やりたいこと
logstashで様々なファイルをelasticsearchに取り込む仕組みを作るにあたって、
可読性のためにコンフィグファイルを分割したい。
logstashのバージョンが6.0以降だと、
下記のリンクのようにMultiple Pipelinesが使えるが、
当方の環境は、5.6なのでMultiple Pipelinesを使わずにやってみた。
方法としては下記リンクに、
「これを5.xで解決しようとすると、ファイルを分けて、logstashのインスタンスを分けて実行する手立てがありました」とあるので、コンフィグを分けてサービス起動すればよいと考えた。
参考リンク:https://qiita.com/tsgkdt/items/3e7f07ca963676b37718
#考慮したポイント
上記のリンクではサービス起動の方法は書いてはいないので、下記を参考にした。
- ユニット定義ファイルについて:https://qiita.com/migo/items/21767287dba0f0ee43fd
- logstashの起動ユーザーが"logstash"なことと、アクセス権限:http://atsuizo.hatenadiary.jp/entry/2017/09/13/093018
- 複数のlogstashサービスを起動したときに、"path.data"のエラーが出る:https://www.mtioutput.com/entry/2019/02/19/180000
#ユニット定義ファイルの作成
インストールと無効化
# yum install logstash
###すでに起動している場合は、下記で無効化###
# systemctl stop logstash.service
# systemctl disable logstash.service
ユニット定義ファイル作成
###①元になるユニット定義をコピーで作成
# cp -p /etc/systemd/system/logstash.service /etc/systemd/system/logstash_hoge.service
###②path.data用のディレクトリ作成
# mkdir /etc/logstash/logstash_hoge
###ユニット定義ファイル
# vi /etc/systemd/system/logstash_hoge.service
以下を修正
- Descriptionの修正
- UserとGroupをlogstash→rootに変更
- ExecStartの末尾に「--path.data /etc/logstash/logstash_hoge」を追加
[Unit]
Description=logstash_hoge
[Service]
Type=simple
User=root
Group=root
# Load env vars from /etc/default/ and /etc/sysconfig/ if they exist.
# Prefixing the path with '-' makes it try to load, but if the file doesn't
# exist, it continues onward.
EnvironmentFile=-/etc/default/logstash
EnvironmentFile=-/etc/sysconfig/logstash
ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash" --path.data /etc/logstash/logstash_hoge
Restart=always
WorkingDirectory=/
Nice=19
LimitNOFILE=16384
[Install]
WantedBy=multi-user.target
#サービス登録
# systemctl enable logstash_hoge.service
# systemctl start logstash_hoge.service