Graylog 5.2 をインストールする
サーバー、NW 機器、アプリケーションなどのログを一元管理し必要な情報を抽出・分析したいと思い調べていたのですが、とてもお高い。
Splunk や Sumo Logic、Datadog、LogPoint、ALog、EventLog Analyzer などなど、守備範囲や課金形態もまちまち。
Syslog サーバーへ集約してゴリゴリ見るのもつらそう。
そこで、ELK(Elasticsearch, Logstash, Kibana)や Graylog に辿り着き、一旦インストールしてみた結果 Graylog の方が導入しやすそうだったので、まずは Graylog をインストールしてみます。
Graylog の動作に必要なものは、次の通りです。
- OpenSearch 1.x, 2.x
- MongoDB 5.x or 6.x
Graylog のインストール
タイムゾーンの設定
インストールドキュメントから参照できるブログに、タイムゾーンを UTC とするよう推奨されていますのでマニュアルに従いタイムゾーンを設定します。
~$ sudo timedatectl set-timezone UTC
MongoDB のインストール
Ubuntu 22.04 では、公式パッケージとして MongoDB 5.x や 6.x がサポートされていないのでリポジトリ情報を追加します。
その準備として gnupg と curl をインストールします。
~$ sudo apt-get install gnupg curl
MongoDB 6.0 リポジトリの GPG キーをインポートします。(dearmor:バイナリに変換して保存)
~$ curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
MongoDB 6.0 リポジトリを追加します。
~$ echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
念のため、リポジトリ情報が追加されているか確認します。
~$ sudo cat /etc/apt/sources.list.d/mongodb-org-6.0.list
deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse
正しく追加されていましたので、パッケージデータベースを再読み込みします。
~$ sudo apt-get update
MongoDB をインストールします。
~$ sudo apt-get install -y mongodb-org
Graylog のインストールドキュメントには、「sudo apt-key add -」とありリポジトリ鍵として GPG 公開鍵を登録するよう記載がありますので実行しておきます。
~$ wget -qO- 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xf5679a222c647c87527c2f8cb00a0bd1e2c63c11' | sudo apt-key add -
OS 起動時に MongoDB が起動するようにし、 MongoDB を開始しておきます。
~$ sudo systemctl daemon-reload
~$ sudo systemctl enable mongod.service
~$ sudo systemctl restart mongod.service
サービスが起動しているか確認します。
:~$ sudo systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-11-29 15:05:33 UTC; 23min ago
Docs: https://docs.mongodb.org/manual
Main PID: 3370 (mongod)
Memory: 68.5M
CPU: 10.213s
CGroup: /system.slice/mongod.service
└─3370 /usr/bin/mongod --config /etc/mongod.conf
一応、インストールされた MongoDB のバージョンも確認しておきます。
~$ mongod --version
db version v6.0.12
Build Info: {
"version": "6.0.12",
"gitVersion": "21e6e8e11a45dfbdb7ca6cf95fa8c5f859e2b118",
"openSSLVersion": "OpenSSL 3.0.2 15 Mar 2022",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "ubuntu2204",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
OpenSearch のインストール
OpenSearch も公式パッケージとしてサポートされていないのでリポジトリ情報を追加します。
OpenSearch リポジトリの GPG キーをインポートします。
~$ curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring
OpenSearch 2.x リポジトリを追加します。
~$ 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-get update
OpenSearch をインストールします。
~$ sudo apt-get install opensearch
Graylog 用の設定をする
セキュアでない最小限の設定をします。
テキストエディターで、 OpenSearch の設定ファイルを修正していきます。
~$ sudo 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
JVM のヒープメモリを実装メモリの半分に設定するとよいようですので設定を変更していきます。
~$ sudo nano /etc/opensearch/jvm.options
設定ファイルの次の部分を環境に合わせて修正します。
-Xms1g
-Xmx1g
プロセスが使用可能なメモリマップ領域の最大数を設定します。
~$ sudo sysctl -w vm.max_map_count=262144
~$ echo 'vm.max_map_count=262144' >> sudo /etc/sysctl.conf
OS 起動時に OpenSearch が起動するようにし、 OpenSearch を開始しておきます。
~$ sudo systemctl daemon-reload
~$ sudo systemctl enable opensearch.service
~$ sudo systemctl start opensearch.service
サービスが起動しているか確認します。
~$ sudo systemctl status opensearch.service
● opensearch.service - OpenSearch
Loaded: loaded (/lib/systemd/system/opensearch.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-11-29 16:20:51 UTC; 1min 2s ago
Docs: https://opensearch.org/
Main PID: 4382 (java)
Tasks: 63 (limit: 4516)
Memory: 2.3G
CPU: 18.538s
CGroup: /system.slice/opensearch.service
└─4382 /usr/share/opensearch/jdk/bin/java -Xshare:auto -Dopensearch.networkaddress.cache.ttl=60 -Dopensearch.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=tr>
Nov 29 16:20:43 ar-sv023 systemd[1]: Starting OpenSearch...
Nov 29 16:20:45 ar-sv023 systemd-entrypoint[4382]: WARNING: A terminally deprecated method in java.lang.System has been called
Nov 29 16:20:45 ar-sv023 systemd-entrypoint[4382]: WARNING: System::setSecurityManager has been called by org.opensearch.bootstrap.OpenSearch (file:/usr/share/opensearch/lib/opensearch-2.11.0.jar)
Nov 29 16:20:45 ar-sv023 systemd-entrypoint[4382]: WARNING: Please consider reporting this to the maintainers of org.opensearch.bootstrap.OpenSearch
Nov 29 16:20:45 ar-sv023 systemd-entrypoint[4382]: WARNING: System::setSecurityManager will be removed in a future release
Nov 29 16:20:45 ar-sv023 systemd-entrypoint[4382]: WARNING: A terminally deprecated method in java.lang.System has been called
Nov 29 16:20:45 ar-sv023 systemd-entrypoint[4382]: WARNING: System::setSecurityManager has been called by org.opensearch.bootstrap.Security (file:/usr/share/opensearch/lib/opensearch-2.11.0.jar)
Nov 29 16:20:45 ar-sv023 systemd-entrypoint[4382]: WARNING: Please consider reporting this to the maintainers of org.opensearch.bootstrap.Security
Nov 29 16:20:45 ar-sv023 systemd-entrypoint[4382]: WARNING: System::setSecurityManager will be removed in a future release
Nov 29 16:20:51 ar-sv023 systemd[1]: Started OpenSearch.
Graylog のインストール
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 の設定を行います
Graylog 用に 2 つのパスワードを用意する必要があります。1 つは秘密のパスワードともう一つはログイン時に使用するパスワードから sha256 算出されたハッシュ値を設定します。
まずは秘密のパスワードですが、設定ファイルには「pwgen -N 1 -s 96」で生成するように書かれていますが、「pwgen」が無いため次のコマンドで生成します。
出力結果を控えておきます。
~$ < /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;
次にログイン用のパスワードの設定値を取得します。ログイン用として使用するパスワードを入力するとハッシュ値が出力されるので、こちらも控えておきます。
~$ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
Enter Password:
c8c27147a66ee4264e1c3fcfce00f49702ab5ab44fa540cdafb26359d011aa73
テキストエディタで「 /etc/graylog/server/server.conf 」を開きます。
password_secret = <秘密のパスワード>
root_password_sha2 = <sha256ハッシュ>
http_bind_address = <GraylogサーバのIPアドレス>:9000
Graylog のインストールドキュメントには「 elasticsearch_hosts 」の設定について書かれてますが、同じサーバーへ OpenSearch をインストールしているので「 elasticsearch_hosts 」についてはそのままにしています。
それでは、Graylog についても開始しておきます。
sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
Graylog が起動していることを確認します。
:~$ sudo systemctl status graylog-server
● graylog-server.service - Graylog server
Loaded: loaded (/lib/systemd/system/graylog-server.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-11-29 17:36:55 UTC; 4min 24s ago
Docs: http://docs.graylog.org/
Main PID: 809 (graylog-server)
Tasks: 253 (limit: 4516)
Memory: 992.9M
CPU: 24.936s
CGroup: /system.slice/graylog-server.service
├─809 /bin/sh /usr/share/graylog-server/bin/graylog-server
└─840 /usr/share/graylog-server/jvm/bin/java -Xms1g -Xmx1g -server -XX:+UseG1GC -XX:-OmitStackTraceInFastThrow -Djdk.tls.acknowledgeCloseNotify=true -Dlog4j2.formatMsgNoLookups=true -jar -Dlog4j.>
Nov 29 17:36:55 ar-sv023 systemd[1]: Started Graylog server.
起動には少し時間がかかるようですので、 Graylog のログに「Graylog server is up and running」があることを確認します。
~$ sudo tail -f /var/log/graylog-server/server.log
起動が確認出来たらブラウザーから「http://< Graylog サーバーの IP アドレス:9000>/」へアクセスし、ログイン画面が表示されることを確認します。
ユーザ名は「admin」、設定したパスワードでログイン出来たらインストール完了です。