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でのログ転送が行えるようになった。
![サーバ/インフラエンジニア養成読本 ログ収集〜可視化編 [現場主導のデータ分析環境を構築!] Software Design plus](http://ecx.images-amazon.com/images/I/61rZ7L4Zt1L._SL160_.jpg)