Graylogで集中ログ収集と分析を管理する方法

Graylogは、ログ管理を一元化する、非常に堅牢なオープンソースツールです。Linuxサーバー、Windows、ネットワーク機器など、あらゆるデバイスからログを収集、視覚化、分析するのに最適です。ログがあちこちに散在していて、問題を見つけるのが干し草の山から針を探すようなものであれば、Graylogを導入すれば状況は一変します。導入後は、ほぼ瞬時に検索、フィルタリング、ダッシュボードを利用できます。しかし、サーバーのインストールや依存関係の扱いに慣れていない場合は、セットアップが簡単ではないことをご承知おきください。このガイドでは、Linuxシステム(主にDebianベース)にスタック全体をゼロからインストールする方法を解説します。これにより、頭を悩ませることなく、Graylogをすぐに使い始めることができます。

Graylog を動作させるには、メタデータ用の MongoDB、ログ保存/検索用の OpenSearch (または Elasticsearch)、Java (OpenJDK)、そして Graylog サーバー本体など、いくつかのコンポーネントをインストールする必要があります。ハードウェア面では、マシンに少なくとも 2GB の RAM が搭載されていることを確認してください(大規模な構成の場合は、より多くの RAM を搭載することが望ましいです)。Linux は当然のことながら、必要以上に複雑に動作するため、依存関係によって特に新しい Debian や Ubuntu のバージョンで問題が発生する可能性があります。重要なのは、すべての前提条件をインストールし、各コンポーネントを適切に構成し、サービスが正しく起動することを確認することです。5 分で完了する作業ではありませんが、スタックが稼働すれば、ログ管理において非常に強力なツールとなります。

LinuxシステムにGraylogスタックをインストールする方法

MongoDBと依存関係の設定

  • まず、GnuPG と curl がシステムにまだインストールされていない場合はインストールします。これらはリポジトリのセットアップとキー管理に必要です。
  • MongoDB 6.x リポジトリを追加します。MongoDB 7 は Graylog ではまだ推奨されていないためです。これをスキップしないでください。そうしないと、更新が悪夢になります。
  • 使用$ sudo apt-get install gnupg curl
  • 次に、MongoDB GPG キーを取得してリポジトリを追加します。
  • bash $ curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg –dearmor $ echo “deb [signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg] http://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main” | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
  • パッケージ リストを更新し、MongoDB をインストールします。
  • $ sudo apt-get update
  • $ sudo apt-get install -y mongodb-org

補足:一部の環境では、MongoDB 6.x をインストールすると依存関係エラーが発生します。これは主に、libssl1.1 が新しい Debian/Ubuntu バージョンでは利用できなくなったことが原因です。その場合は、必要な libssl パッケージを手動でダウンロードしてインストールしてください。

$ sudo wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb $ sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb 

インストールしたら、MongoDB を起動して有効にします。

$ sudo systemctl daemon-reload $ sudo systemctl enable mongod.service $ sudo systemctl restart mongod.service $ sudo systemctl --type=service --state=active | grep mongod

OpenSearch(またはElasticsearch)のインストール

  • Graylog は OpenSearch 2.x で適切に動作するため、OpenSearch リポジトリを追加します。Elasticsearch は公式にはサポートされなくなりました。
  • コマンド:
  • $ sudo apt-get update && sudo apt-get install lsb-release ca-certificates curl gnupg2
  • GPG キーを取得してリポジトリを追加します。
  • bash $ curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg –dearmor –batch –yes -o /usr/share/keyrings/opensearch-keyring $ echo “deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main” | sudo tee /etc/apt/sources.list.d/opensearch-2.x.list $ sudo apt update

OpenSearch 2.12 以降では、インストール中に初回実行時に管理者パスワードを設定する必要があります。

$ sudo OPENSEARCH_INITIAL_ADMIN_PASSWORD=$(tr -dc A-Z-a-z-0-9_@#%^-_=+ < /dev/urandom | head -c 32) apt-get install opensearch

基本的なシングルノードインストールで動作するように設定を構成します。nano /etc/opensearch/opensearch.ymlを使用し、以下の行を調整します。

cluster.name: graylog node.name: ${HOSTNAME} path.data: /var/lib/opensearch path.logs: /var/log/opensearch discovery.type: single-node network.host: 0.0.0.0 action.auto_create_index: false plugins.security.disabled: true indices.query.bool.max_clause_count: 32768 

また、 /etc/opensearch/opensearch.ymlでメール通知(アラート用)の設定を行います。GmailのSMTPホスト、ポート、認証情報などのSMTP情報を設定します。Gmail経由でアラートを受け取るには、セキュリティレベルが低いアプリアクセスが有効になっている適切なメールアカウントが必要です(ただし、アプリ固有のパスワードを使用することをお勧めします)。この手順は見落とされがちですが、この手順がないとメールアラートは機能しません。

Javaヒープのサイズ設定は、特にリソース管理において重要です。/etc/opensearch/jvm.optionsを編集しフラグとフラグを合計RAMの約半分に設定します-Xms-Xmx例えば、サーバーのメモリが8GBの場合、両方のフラグを4GBに設定します。

-Xms4g -Xmx4g 

最後に、OpenSearch がスムーズに動作するように Linux の仮想メモリを調整します。

$ sudo sysctl -w vm.max_map_count=262144 $ echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf 

OpenSearch を起動して有効にします。

$ sudo systemctl enable --now opensearch

Graylogサーバーのインストール

  • Debian 用の Graylog リポジトリを追加します。
  • $ wget https://packages.graylog2.org/repo/packages/graylog-5.2-repository_latest.deb
  • インストールして更新します:
  • $ sudo dpkg -i graylog-5.2-repository_latest.deb
  • $ sudo apt-get update
  • Graylog サーバーをインストールします。
  • $ sudo apt-get install graylog-server

Graylogを起動する前に、セットアップに必須のセキュアシークレットを生成してください。pwgen(必要に応じてインストールしてください)を使用してランダムシークレットを作成します。

$ pwgen -N 1 -s 96

使用する予定の管理者パスワードの SHA-256 ハッシュを生成します。

$ echo -n "YourPassword" | sha256sum | awk '{ print $1 }'

生成されたシークレットとハッシュを/etc/graylog/server/server.confに貼り付けます。次に、WebインターフェースのIPとポート(通常はhttp_bind_address)を設定してアクセスできるようにします。その後、Graylogサービスを起動します。

$ sudo systemctl enable --now graylog-server

最初のログインと初期設定

Graylog Web UI に初めてアクセスする際、事前に設定したパスワードの入力を求められます。ただし、ワークフローの不具合により、ログには一時的なパスワード(「eDLaYAlaeX」など)が表示されます。その認証情報を使用してログインし、初期ウィザードを実行してください。入力項目を選択し、ユーザーを設定し、デバイスへのストリームの作成を開始するだけで、非常に簡単です。Linuxサーバーから基本的なログを取得するには、ポート514(または任意のポート)にSyslog UDP入力を設定し、そこにログを送信するようにデバイスを設定するだけです。

ログが収集できたら、検索機能を使ってイベントを検索し、ダッシュボードを作成します。例えば、失敗したSSH接続を検索するには、次のように記述しますapplication_name:sshd AND message:Fail*。組み込みツールを使えば簡単にフィルタリングできますが、構文に慣れるまで少し試行錯誤する必要があるかもしれません。ユーザーが行き詰まるのはここなので、検索を完璧にできるようになるまで何度か試行錯誤が必要になっても驚かないでください。

もちろん、アラート設定は大変便利です。SSHログインが発生したときや、特定のエラーログが表示されたときにメール通知を受け取るように設定できます。「アラート」にアクセスし、検索条件を定義して、メールまたはSlack通知を選択するだけです。少し設定が必要ですが、一度設定すれば、Graylogはあなたが監視していないときでも常に監視してくれます。

幸いにも、これでGraylogを大きな苦労なく使い始めることができるでしょう。少し面倒ではありますが、環境の可視性を高めてくれるので、間違いなくその価値はあります。ただし、忍耐と慎重な設定が鍵となることを忘れないでください。設定が完了すれば、ログの謎はずっと解け、トラブルシューティングもはるかに容易になります。

まとめ

  • MongoDB、OpenSearch、Graylog サーバーを慎重にインストールし、依存関係に注意してください。
  • 適切なパラメータ(特にメモリとネットワーク設定)を使用して構成ファイルを編集します。
  • Graylog の入力にログを送信するように Syslog ソースを設定します。
  • ログの流れが始まったら、検索フィルター、ダッシュボード、アラートを調べてください。

まとめ

この設定全体を機能させるには多少の忍耐が必要ですが、一度稼働させれば、ログを一元管理することのメリットは計り知れません。トラブルシューティング、セキュリティ対策、そしてネットワークの監視に効果的な投資です。問題が発生した場合は、各サービスのログと設定を再度確認してください。入力ミスやネットワークの問題といった些細なことが、大きな問題を引き起こすことはよくあります。この情報が、誰かの週末のストレス解消に役立つことを願っています。