Rocky Linux に Graylog 集中型ログ管理システムをインストールする方法
このページでは
- 前提条件
- Java OpenJDK のインストール
- MongoDB NoSQL データベースのインストール
- エラスティックサーチのインストール
- Graylog サーバーのインストール
- SELinux のセットアップ
- 新しいグレイログ入力を作成
- Ingest Syslog を介して Graylog サーバーにログを送信する
- 結論
Graylog は、データとログのリアルタイム分析をキャプチャ、保存、有効化するための無料のオープンソース ログ管理プラットフォームです。 Java で記述され、MongoDB や Elasticsearch などの他のオープンソース ソフトウェアの上に構築されています。 Graylog は、最も効率的で高速かつ柔軟な集中型ログ管理プラットフォームの 1 つを提供します。 Graylog を使用すると、ほぼすべてのデータ ソースから構造化データと非構造化データの両方を送信して分析できます。
このチュートリアルでは、Rocky Linux サーバーで Graylog を使用して集中ログ管理をセットアップします。このチュートリアルには、Elasticsearch や MongoDB などのいくつかの Graylog 依存関係の基本的なインストールが含まれています。さらに、Graylog 入力をセットアップし、Syslog インジェストを介して Linux マシンから Graylog サーバーにログを送信します。
前提条件
このチュートリアルに従うには、次の要件が必要です。
- Rocky Linux 8 を実行するサーバー。
- sudo/管理者権限を持つ root 以外のユーザー。
- firewalld が実行され、有効になっている。
Java OpenJDK のインストール
Graylog サーバーは、主に Java で記述されたアプリケーション サーバーです。 Graylog をインストールするには、Rocky Linux システムに Java OpenJDK をインストールする必要があります。この記事の執筆時点では、Graylog サーバーには少なくとも Java v8 以降が必要でした。
Rocky Linux リポジトリには、インストールできる Java OpenJDK バージョンが複数あります。以下のコマンドを使用して、利用可能なすべての OpenJDK バージョンを確認できます。
sudo dnf search openjdk
このデモでは、Graylog サーバー用の Java OpenJDK v11 をインストールして使用します。以下の dnf コマンドを実行して、Java OpenJDK を Rocky Linux システムにインストールします。
インストールの確認を求められたら、y を入力して ENTER を押します。
sudo dnf install java-11-openjdk-devel
Java OpenJDK のインストールが完了したら、次の java コマンドを実行して、Java OpenJDK のバージョンを確認して確認します。 Rocky Linux システムに OpenJDK v11 がインストールされているはずです。
java version

MongoDB NoSQL データベースのインストール
ここで、Graylog サーバーの依存関係として MongoDB NoSQL データベースをインストールします。グレイログサーバーのデータ格納にはMongoDBを使用しています。
MongoDB をインストールするには、MongoDB リポジトリを追加する必要があります。その後、MongoDB パッケージをインストールできます。
次のコマンドを実行して、Rocky Linux システムの MongoDB リポジトリを追加します。
cat <<EOF | sudo tee /etc/yum.repos.d/mongodb-org-6.repo
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
EOF
以下の dnf コマンドを実行して、システムで利用可能なリポジトリのリストを確認して確認します。 \mongodb\ リポジトリが追加されているはずです。
sudo dnf repolist

次に、次の dnf コマンドを使用して MongoDB パッケージをインストールします。インストールの確認を求められたら、y と入力して ENTER を押して続行します。
sudo dnf install mongodb-org

さらに、MongoDB リポジトリの GPG キーを確認するよう求められます。 y を入力して確認し、MongoDB GPG キーを追加します。

MongoDB のインストールが完了したら、次のコマンドを実行して systemd マネージャーをリロードし、新しい MongoDB サービス ファイルを適用します。
sudo systemctl daemon-reload
次のシステム コマンドを使用して、mongod という名前で MongoDB サービスを開始します。次に、mongod サービスがシステムの起動時に自動的に開始されるようにします。
sudo systemctl enable mongod
sudo systemctl start mongod
最後に、次の systemctl コマンドを実行して、mongod サービスを確認および検証します。 MongoDB サービス mongod が実行中であり、システムの起動時に有効になっていることがわかります。
sudo systemctl status mongod

エラスティックサーチのインストール
elasticsearch は、Graylog サーバー ログ管理スタックの検索エンジンを処理します。この記事の執筆時点では、Elasticsearch v7.x をインストールする必要があります。
Graylog Server の現在のバージョンは、Elasticsearch v7.x でのみ実行されます。 v8.x や v9.x などの最新の Elasticsearch をインストールすると、エラーが発生します。
次のコマンドを実行して、Rocky Linux システム用の Elasticsearch v7.x リポジトリをセットアップします。
cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
以下のコマンドを実行して、システム上のリポジトリのリストを確認して確認します。 Elasticsearch v7.x リポジトリが追加されていることがわかります。
sudo dnf repolist

次に、以下の dnf コマンドを使用して Elasticsearch パッケージをインストールします。インストールの確認を求められたら、y を入力して確認し、ENTER を押します。
sudo dnf install elasticsearch

また、GPG キーを Elasticsearch リポジトリに追加するように求められます。 y を入力して GPG キーを追加します。そして、インストールが終了します。

次に、Graylog サーバーで使用される基本インストール用に Elasticsearch サーバーをセットアップする必要があります。
以下のコマンドを使用して、デフォルトの Elasticsearch 構成ファイル /etc/elasticsearch/elasticsearch.yml を編集します。
sudo nano /etc/elasticsearch/elasticsearch.yml
次の基本的な Elasticsearch 構成を追加して、コメントを解除します。
cluster.name: graylog-rocky8
action.auto_create_index: false
終了したら、ファイルを保存して閉じます。
さらに、以下のコマンドを使用してファイル /etc/elasticsearch/jvm.options を編集することにより、Elasticsearch サーバーの最大メモリ割り当てを設定することもできます。
sudo nano /etc/elasticsearch/jvm.options
コメントを外して、デフォルト設定を以下のように変更します。サーバーの最大メモリを使用して、ここで最大メモリ割り当てを変更できます。
-Xms1g
-Xmx1g
終了したら、ファイルを保存して閉じます。
以下の systemctl コマンドを実行して、systemd マネージャーをリロードし、Elasticsearch サーバーに新しいサービス ファイルを適用します。
sudo systemctl daemon-reload
次に、以下のコマンドを使用して、Elasticsearch サーバーを起動して有効にします。 Elasticsearch サービスはシステムの起動時に自動的に実行され、Elasticsearch の現在のステータスは実行中になっているはずです。
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

最後に、次のコマンドを実行して Elasticsearch サービスをチェックし、サービスが実行されていることを確認します。 Elasticsearch サービスが実行中で有効になっているという出力が表示されます。
sudo systemctl status ealsticsearch

さらに、以下の curl コマンドを使用して Elasticsearch サーバーにアクセスすることもできます。クラスター名、クラスター uuid、Elasticsearch バージョン、Lucene バージョン (Elasticsearch のコア) など、Elasticsearch サーバーに関する基本情報の出力を取得する必要があります。
curl localhost:9200

グレイログ サーバーのインストール
Java OpenJDK、MongoDB、および Elasticsearch をインストールしたら、Graylog サーバーをインストールします。その前に、Rocky Linux サーバーに Graylog リポジトリをセットアップする必要があります。次に、Graylog のパスワード認証の構成と、Graylog サーバーによって使用される http_bind_address のセットアップを含む、Graylog サーバーの構成を開始できます。
この記事の執筆時点で、Graylog サーバーの最新バージョンは v4.3 です。次のコマンドを実行して、Graylog リポジトリをサーバーに追加します。
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.3-repository_latest.rpm
以下のコマンドを使用して、Graylog サーバーのリポジトリのリストを確認します。 Graylog Server リポジトリが追加されたことがわかります。
sudo dnf repolist

次に、次の dnf コマンドを実行して、Graylog サーバー パッケージをインストールします。インストールの確認を求められたら、y を入力して確認し、ENTER を押します。
sudo dnf install graylog-server graylog-integrations-plugins

また、GPG キーを Graylog Server リポジトリに追加するように求められます。 y を入力して GPG キーをシステムに追加し、ENTER を押します。そして、Graylog サーバーのインストールが完了します。

ここで、基本的な Graylog サーバーをセットアップします。その前に、以下の dnf コマンドを実行して pwgen パッケージをインストールしてください。インストールを確認するプロンプトが表示されたら、y を入力して ENTER を押します。
pwgen パッケージは、Graylog サーバーのセットアップに使用されるシークレットとパスワードを生成するためのコマンドライン ツールを提供します。
sudo dnf install pwgen

次に、次の pwgen コマンドを実行して、Graylog サーバーの password_secret を生成します。生成されたシークレットを必ずメモにコピーしてください。
sudo pwgen -N 1 -s 96
次のコマンドを実行して、Graylog サーバーの root_password_sha2 の sha256 ハッシュ パスワードを生成します。このパスワードは、Graylog サーバー ダッシュボードへのログインに使用されます。必ず強力なパスワードを使用し、生成された sha256 ハッシュ パスワードをメモにコピーしてください。
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

次に、以下のコマンドを使用して、Graylog サーバー構成ファイル /etc/graylog/server/server.conf を編集します。
sudo nano /etc/graylog/server/server.conf
オプション password_secret および root_password_sha2 の値を生成したパスワードに変更します。さらに、オプション graylog_username で、Graylog サーバーにログインするためのデフォルトのユーザー名を変更することもできます。
password_secret = R8zwuO2NDewUcwRFQ0QDm07tn6AppmwThty0aagxOoqMDWNqPJLwrffpz7DdQyQVY1uHq54QwgYMNkZnBLuXQf3B1giq5RKX
root_password_sha2 = a7fdfe53e2a13cb602def10146388c65051c67e60ee55c051668a1c709449111
ここで、http_bind_address オプションをサーバーの内部 IP アドレスに変更します。また、Graylog サーバーのデフォルト ポートは TCP 9000 です。
http_bind_address = 0.0.0.0:9000
終了したら、ファイルを保存して閉じます。

次の systemctl コマンドを実行して、systemd マネージャーをリロードし、Graylog サーバー サービス ファイルを適用します。
sudo systemctl daemon-reload
以下の systemctl コマンドを使用して、graylog-server サービスを開始して有効にします。 Graylog サーバーが実行され、有効になっている必要があります。これは、システムの起動時に自動的に開始されます。
sudo systemctl enable graylog-server
sudo systemctl start graylog-server

次のコマンドを使用して、graylog-server サービスをチェックして検証します。 Graylog Server is running の現在のステータスの出力と、その有効化が表示され、起動時に自動的に実行されるはずです。
sudo systemctl status graylog-server
最後に、Graylog サーバーが使用するポート 9000 を firewalld に追加する必要があります。
次の firewall-cmd コマンドを実行して、ポート 9000 を firewalld に追加します。次に、firewalld ルールをリロードして、新しい変更を適用します。
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reload
SELinux の設定
enforcing モードで SELinux を有効にして Graylog サーバーを実行している場合は、Graylog サーバーの SELinux ルールを設定する必要があります。
SELinux を管理する前に、以下の dnf コマンドを実行して、SELinux を管理するためのコマンドライン ツールをインストールします。インストールの確認を求められたら、y を入力して ENTER を押します。
sudo dnf install policycoreutils policycoreutils-python-utils

次に、次のコマンドを実行して、Graylog サーバー、Elasticsearch、および MongoDB の SELinux ルールを追加します。
sudo setsebool -P httpd_can_network_connect 1
sudo semanage port -a -t http_port_t -p tcp 9000
sudo semanage port -a -t http_port_t -p tcp 9200
sudo semanage port -a -t mongod_port_t -p tcp 27017
これで、Graylog サーバーにアクセスできます。
新しいグレイログ入力を作成
アプリケーションまたはクライアント マシンからログを受信できるようにするには、Graylog サーバーで入力をセットアップする必要があります。使用できるグレイログ入力には複数のタイプがあります。詳細については、グレイログのドキュメントを確認してください。 Graylog 入力は TCP/UDP プロトコルで実行され、Syslog、GELF、CEF、または RAW などの複数の形式でログを受信できます。また、TCP/HTTPS プロトコルを介して安全にログを受信できます。
このデモでは、Linux マシン クライアントからログを受信するために使用されるグレイログ入力を作成します。この入力は \Syslog UDP\ を使用し、UDP プロトコル経由でクライアント マシンからログ メッセージを受信します。
Web ブラウザーを開き、サーバーの IP アドレスに続いて、Graylog サーバーのポート 9000 (つまり、http://192.168.5.100:9000/) にアクセスします。 Graylog Server インストールのログイン ページが表示されます。
Graylog Server ダッシュボードにログインするには、ユーザー名とパスワードを入力します。次に、[サインイン] をクリックします。

これで、Graylog サーバー管理ダッシュボードの新しいウィンドウが表示されます。

新しいグレイログ入力を作成するには、メニュー \システム\ をクリックし、\入力\ を選択します。

入力のタイプを選択し、\Launch new input\ をクリックします。この例では、新しい入力タイプ \Syslog UDP\ を作成します。すべての Linux クライアント マシンは、Syslog UDP プロトコルを介してこの入力にログを送信します。

以下のように、新しい入力の詳細を入力します。
- タイトル: syslog-udp-input というタイトルを使用します。
- バインド アドレス: グレイログ サーバーの内部 IP アドレスを入力するか、内部ネットワークに接続している場合は 0.0.0.0 を使用できます。
- ポート: この例では、この入力に UDP ポート 5142 を使用します。
[保存] をクリックして入力を追加します。

これで、Graylog 入力のステータスが \running\ で表示されるはずです。下部に、Graylog 入力に関する詳細情報が表示されます。

最後に、Graylog サーバーに戻り、以下の firewall-cmd コマンドを実行して、syslog-udp-input で使用される UDP ポート 5142 を追加します。
sudo firewall-cmd --add-port=5142/udp --permanent
sudo firewall-cmd --reload
インジェスト Syslog を介して Graylog サーバーにログを送信する
Graylog サーバーで Graylog Syslog UDP 入力を作成しました。次に、Rsyslog を使用してログを Graylog サーバーに送信するように Linux マシンをセットアップします。この例では、ホスト名が「linux-host1」で、Graylog サーバーの IP アドレスが 192.168.5.100 の Rocky Linux clinet マシンを使用します。
Linux クライアント マシンに接続し、次のコマンドを実行して、Linux マシンの rsyslog サービスを確認します。実行中の rsyslog サービスの出力を取得する必要があります。
sudo systemctl status rsyslog

次に、Graylog サーバーにログを送信するために使用される新しい追加の rsyslog 構成ファイルを作成します。次のコマンドを実行して、新しいファイル /etc/rsyslog.d/graylog.conf を作成します。
sudo nano /etc/rsyslog.d/graylog.conf
次の構成をファイルに追加します。この構成では、linux-host1 の rsyslog サービスは、UDP ポート 5142 のサーバー IP アドレス 192.168.5.100 で実行される Graylog Server Input にログを送信します。
*.*@192.168.5.100:5142;RSYSLOG_SyslogProtocol23Format
終了したら、ファイルを保存して閉じます。
次の systemctl コマンドを実行して、rsyslog サービスを再起動し、構成ファイルに新しい変更を適用します。また、rsyslog サービスはシステム ログを Graylog サーバーに送信します。数分待つことができます。
sudo systemctl restart rsyslog
次に、Graylog サーバーの管理ダッシュボードに戻ります。次に、「検索」メニューをクリックします。これで、linux-host1 マシンからのログと、Graylog サーバーで利用可能なログが表示されるはずです。

結論
このチュートリアルを通じて、Graylog サーバーを Rocky Linux サーバーにインストールする方法を学習しました。これには、Java OpenJDK、Elasticsearch、MongoDB などの依存関係のインストールが含まれます。また、SELinux を enforcing モードで有効にし、firewalld を有効にして、Rocky Linux で Graylog サーバーを構成しました。
最後に、Linux マシンの集中ログ管理システムとして使用できる「Syslog UDP」タイプの Graylog Input をセットアップする方法を学習しました。また、Rsyslog サービスを介して Linux マシンから Graylog サーバーにログを送信する方法も学習しました。また、アプリケーションの入力をさらに設定したり、Graylog サーバーに新しい Linux マシンを追加したりしました。