Graylogでは、Syslogのほかに「Graylog Collector Sidecar」というエージェントを使ってのログ収集方法がある。
この方式の場合、GELFというGraylogの独自フォーマットでのログ入力フォーマットを使えるため、Syslogに比べて詳細な情報を記録しておくことが可能になる。
今回は、この「Graylog Collector Sidecar」を用いてGELFでのログをGraylogに連携させる。このとき、エージェントからGraylogへのデータ転送にはFilebeat、Winlogbeat、NXLogが使えるのだが、今回はNXLogを利用する。手順については公式の手順が用意されているので、それを参考に行う。
なお、すでにGraylog Server側でGELFのインプットは作成済の状態とする(TCP)。
1.Graylog Collector Sidecarのインストール
まずはGraylog Collector Sidecarのパッケージのインストールから。
こちらから対象のディストリビューションに対応したパッケージをダウンロードして、以下のコマンドでインストールを行う。
sudo rpm -ihv https://github.com/Graylog2/collector-sidecar/releases/download/0.0.9/collector-sidecar-0.0.9-1.x86_64.rpm # CentOSなどRHEL系の場合
wget --quiet https://github.com/Graylog2/collector-sidecar/releases/download/0.0.9/collector-sidecar_0.0.9-1_amd64.deb && sudo dpkg -i collector-sidecar_0.0.9-1_amd64.deb && rm collector-sidecar_0.0.9-1_amd64.deb # Debian/Ubuntu系
2.NXLogのインストール
次に、Graylog Collector SidecarからGraylog Serverへログを転送させるために用いるNXLogのインストールを行う。
こちらのページからパッケージをダウンロードしてインストールする。
CentOS 7の場合
yum install https://nxlog.co/system/files/products/files/1/nxlog-ce-2.9.1716-1_rhel7.x86_64.rpm
sudo service nxlog stop
sudo chkconfig --del nxlog
sudo gpasswd -a nxlog root
sudo chown -R nxlog.nxlog /var/spool/collector-sidecar/nxlog
Ubuntu Server 16.04の場合
sudo apt-get install libapr1 libdbi1
wget --quiet https://nxlog.co/system/files/products/files/1/nxlog-ce_2.9.1716_ubuntu_1604_amd64.deb && sudo dpkg -i nxlog-ce_2.9.1716_ubuntu_1604_amd64.deb && rm nxlog-ce_2.9.1716_ubuntu_1604_amd64.deb
sudo /etc/init.d/nxlog stop
sudo update-rc.d -f nxlog remove
sudo gpasswd -a nxlog adm
sudo chown -R nxlog.nxlog /var/spool/collector-sidecar/nxlog
インストール完了後、以下のコマンドでGraylog Collector Sidecarのサービスを稼働させる。
sudo graylog-collector-sidecar -service install
sudo systemctl start collector-sidecar
3.設定ファイルの編集
最後に、Graylog Collector Sidecarの設定ファイルを編集してやる。
(とりあえずここではタグを「linux」にしているが、できればCentOSやUbuntuで分けて書いてやったほうがいいと思う。)
●/etc/graylog/collector-sidecar/collector_sidecar.yml
server_url: http://GraylogServerのホスト名orIPアドレス:12900
update_interval: 30
tls_skip_verify: true
send_status: true
list_log_files:
- /var/log
node_id: エージェントのノード名(重複すると正常動作しないので注意)
collector_id: file:/etc/graylog/collector-sidecar/collector-id
log_path: /var/log/graylog/collector-sidecar
log_rotation_time: 86400
log_max_age: 604800
tags:
- linux
backends:
- name: nxlog
enabled: true
binary_path: /usr/bin/nxlog
configuration_path: /etc/graylog/collector-sidecar/generated/nxlog.conf
最後に、Graylog Collector Sidecarを再起動する。
systemctl restart collector-sidecar
4.GraylogServerの管理画面からエージェントの設定を行う
Graylog Collector Sidecarの設定が終わったら、続きはGraylog Server側の管理画面で行う。
Graylog Serverのトップページから[System] > [Collector]を開き、先ほど設定したエージェントが表示されていることを確認する。
右上にある「Manage Configuration」をクリックして、「Create Configuration」から新しいコンフィグを作成する。
(ここでは、とりあえず「Linux」というコンフィグを作っている)
コンフィグの作成後、コンフィグ名をクリックして内容を編集する。
基本的には、以下の設定だけやってやればよい。
- Tagの追加(Graylog Collector Sidecarで指定したタグ)
- Configure Collector Outputsの設定(Graylog Collector SidecarからGraylog Serverへログを転送する際の設定)
- Configure Collector Inputsの設定(Graylog Collector Sidecarで収集するログの設定)
なお、このときにDebian系とRHEL系で同居させる場合は、「Define Snippets」のnxlog-defaultsを以下のように編集する必要がある。
{{if .Linux}}
User nxlog
Group nxlog
{{if eq .LinuxPlatform "debian"}}
Moduledir /usr/lib/nxlog/modules
{{end}}
{{if eq .LinuxPlatform "redhat"}}
Moduledir /usr/libexec/nxlog/modules
{{end}}
CacheDir /var/spool/collector-sidecar/nxlog
PidFile /var/run/graylog/collector-sidecar/nxlog.pid
define LOGFILE /var/log/graylog/collector-sidecar/nxlog.log
LogFile %LOGFILE%
LogLevel INFO
<Extension logrotate>
Module xm_fileop
<Schedule>
When @daily
Exec file_cycle('%LOGFILE%', 7);
</Schedule>
</Extension>
{{end}}
{{if .Windows}}
Moduledir %ROOT%\modules
CacheDir %ROOT%\data
Pidfile %ROOT%\data\nxlog.pid
SpoolDir %ROOT%\data
LogFile %ROOT%\data\nxlog.log
LogLevel INFO
<Extension logrotate>
Module xm_fileop
<Schedule>
When @daily
Exec file_cycle('%ROOT%\data\nxlog.log', 7);
</Schedule>
</Extension>
{{end}}
これで、Graylog Collector Sidecarでのログ転送が行えるようになった。