さくらのウェブアクセラレータはログをオブジェクトストレージに保存する機能がありますが、そのままでは手軽にログ調査ができません。ここでは、さくらのウェブアクセラレータのログを kibana で閲覧できるようにしたいと思います。
kibana はご存じの方も多いかと思いますが、elasticsearch に保存されたログを手軽に検索・閲覧できる Web インタフェースを提供しています。elasticsearch は Apache Lucene をベースにした検索エンジンです。
ログの取り込みには filebeat を使用します。オブジェクトストレージは S3 互換ですので、filebeat の input type でaws-s3 を使用すれば、オブジェクトストレージに保存されたウェブアクセラレータのログを elasticsearch に取り込むことができます。
今回は、まずさくらのクラウドのサーバを作成し、elasticsearch、kibana、filebeat をインストールします。オブジェクトストレージからのログ取得は、次回ご紹介します。
クラウドのサーバ作成
クラウドのサーバを作成します。
さくらのクラウドにログインして、ホーム画面から「さくらのクラウド」を選択してください。
- 左側のサイドメニューより「サーバ」を選択
- 右上の「追加」を選択
- 「シンプルモード」にチェックを入れる
下記の内容でサーバを作成します。
| ・「Unix / Linux」タブから「AlmaLinux」の「9.8 64bit」を選択 ・サーバプラン: 「2仮想コア / 4GB」 ・ディスクプラン: 「20GB SSDプラン」 ・接続先のネットワーク: 「インターネット」 ・サーバの設定 - 管理ユーザのパスワード 適宜 - 公開鍵 適宜 ・ホスト名: kibana01 |
今回は最小限のスペックで作成していますが、用途に応じてスペックは変更してください。
「作成」ボタンを押して、サーバが起動するまでしばらく待ちます。
サーバが作成されて起動したら、サーバの IPv4 アドレスを確認して、ssh 接続ができることを確認してください。
elasticsearch インストール
elasticsearch、kibana、filebeat ともに rpm のリポジトリより最新版をインストールします。
まず、PGP キーをインストールします。
[root@kibana01 ~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
リポジトリの設定をします。
[root@kibana01 ~]# vi /etc/yum.repos.d/elasticsearch.repo
ファイルには下記の内容を記述します
[elasticsearch]
name=Elasticsearch repository for 9.x packages
baseurl=https://artifacts.elastic.co/packages/9.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
type=rpm-md
elasticsearch をインストールします。
[root@kibana01 ~]# dnf install --enablerepo=elasticsearch elasticsearch
インストールが完了すると、下記のようなメッセージが表示されます。
「The generated password for the elastic built-in superuser is :」の後に、管理者パスワードが表示されているので、控えておいてください。
--------------------------- Security autoconfiguration information ------------------------------
Authentication and authorization are enabled.
TLS for the transport and HTTP layers is enabled and configured.
The generated password for the elastic built-in superuser is : yPxxxxxxxxxxxxxxxx1w
今回のサーバは全体で 4GBメモリなので、elasticsearch のメモリ上限を 1GB で設定しておきます。
[root@kibana01 ~]# vi /etc/elasticsearch/jvm.options
ファイルに下記の内容を追記します。
-Xms1g
-Xmx1g
elasticserach サービスを有効化して、起動します。
[root@kibana01 ~]# systemctl enable elasticsearch
[root@kibana01 ~]# systemctl start elasticsearch
起動状況をログで確認します。
[root@kibana01 ~]# tail -3 /var/log/elasticsearch/elasticsearch.log
[2026-09-05T23:16:34,575][INFO ][o.e.c.m.MetadataCreateDataStreamService] [kibana01] adding data stream [ilm-history-7] with write index [.ds-ilm-history-7-2026.09.05-000001], backing indices [], and aliases []
[2026-09-05T23:16:34,576][INFO ][o.e.c.r.a.AllocationService] [kibana01] in project [default] updating number_of_replicas to [0] for indices [.ds-ilm-history-7-2026.09.05-000001]
[2026-09-05T23:16:34,668][INFO ][o.e.c.r.a.AllocationService] [kibana01] current.health="GREEN" message="Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[.ds-ilm-history-7-2026.09.05-000001][0]]])." previous.health="YELLOW" reason="shards started [[.ds-ilm-history-7-2026.09.05-000001][0]]"
「current.health="GREEN"」となっていれば正常に動作しています。
curl で elasticsearch に接続確認をします。
basic 認証が必要となります。ユーザ名は「elastic」、パスワードはインストール時に控えたものです。
[root@kibana01 ~]# curl -k -u elastic:yPxxxxxxxxxxxxxxxx1w https://localhost:9200
{
"name" : "kibana01",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "hvX--1HISQStr1eA3MIqng",
"version" : {
"number" : "9.5.3",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "367ec317ec5f668dd864d41be06052a567102fec",
"build_date" : "2026-09-01T16:11:59.322249404Z",
"build_snapshot" : false,
"lucene_version" : "10.5.1",
"minimum_wire_compatibility_version" : "8.19.0",
"minimum_index_compatibility_version" : "8.0.0"
},
"tagline" : "You Know, for Search"
}
上記のような結果が出れば、認証して接続も確認できています。
basic 認証の情報を都度、コマンドラインに入れるのも手間なので、ファイルに保存して curl に参照させます。
[root@kibana01 ~]# vi ~/.netrc
下記の内容を保存します。
machine localhost
login elastic
password yPxxxxxxxxxxxxxxxx1w
再度、接続確認します。
[root@kibana01 ~]# curl -k --netrc https://localhost:9200
前に確認した内容と同様に結果が返ってくれば OK です。
kibana インストール
PGP キーは elasticsearch と同じなので、再度インストールする必要はありません。
リポジトリの設定をします。
[root@kibana01 ~]# vi /etc/yum.repos.d/kibana.repo
ファイルには下記の内容を記述します
[kibana-9.X]
name=Kibana repository for 9.x packages
baseurl=https://artifacts.elastic.co/packages/9.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
elasticsearch のバージョンを確認します
[root@kibana01 ~]# /usr/share/elasticsearch/bin/elasticsearch -V
Version: 9.5.3, Build: rpm/367ec317ec5f668dd864d41be06052a567102fec/2026-09-01T16:11:59.322249404Z, JVM: 26.0.2
elasticsearch と同じバージョンの kibana をインストールします。
[root@kibana01 ~]# dnf install kibana-9.5.3
kibana のセキュリティのために鍵の生成が必要です。下記を実行して生成します。
[root@kibana01 ~]# /usr/share/kibana/bin/kibana-encryption-keys generate
## Kibana Encryption Key Generation Utility
The 'generate' command guides you through the process of setting encryption keys for:
xpack.encryptedSavedObjects.encryptionKey
Used to encrypt stored objects such as dashboards and visualizations
https://www.elastic.co/guide/en/kibana/current/xpack-security-secure-saved-objects.html#xpack-security-secure-saved-objects
xpack.reporting.encryptionKey
Used to encrypt saved reports
https://www.elastic.co/guide/en/kibana/current/reporting-settings-kb.html#general-reporting-settings
xpack.security.encryptionKey
Used to encrypt session information
https://www.elastic.co/guide/en/kibana/current/security-settings-kb.html#security-session-and-cookie-settings
Already defined settings are ignored and can be regenerated using the --force flag. Check the documentation links for instructions on how to rotate encryption keys.
Definitions should be set in the kibana.yml used configure Kibana.
Settings:
xpack.encryptedSavedObjects.encryptionKey: c64xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx195
xpack.reporting.encryptionKey: eb1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx103
xpack.security.encryptionKey: 6bbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc4d
最後の3行の鍵情報を kibana の設定ファイルに記述します。
kibana の設定ファイルを編集します。
[root@kibana01 ~]# vi /etc/kibana/kibana.yml
kibana の待ち受け IPアドレスと、前述の鍵情報を追記します。
server.host: "0.0.0.0"
xpack.encryptedSavedObjects.encryptionKey: c64xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx195
xpack.reporting.encryptionKey: eb1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx103
xpack.security.encryptionKey: 6bbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc4d
elasticserach サービスを有効化して、起動します。
[root@kibana01 ~]# systemctl enable kibana
[root@kibana01 ~]# systemctl start kibana
サービスの起動に失敗していないか、確認しておきます。
[root@kibana01 ~]# systemctl status kibana
messages ログを確認します
# tail -F /var/log/messages
下記のようなログが出ていれば、起動しています。
Sep 5 13:26:49 kibana01 kibana[2128]: Go to http://0.0.0.0:5601/?code=615705 to get started.
firewalld で kibana のポート番号 5601 を許可設定します。
[root@kibana01 ~]# firewall-cmd --add-port=5601/tcp --permanent
[root@kibana01 ~]# firewall-cmd --reload
なお、外部からのアクセスについては、接続元 IPアドレスや、VPNルータ経由とするなど含めて、適宜制限することもご検討ください。
セットアップで必要となるため、elasticsearch に接続する kibana_system ユーザのパスワードを生成します。
[root@kibana01 ~]# /usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system
This tool will reset the password of the [kibana_system] user to an autogenerated value.
The password will be printed in the console.
Please confirm that you would like to continue [y/N]y
Password for the [kibana_system] user successfully reset.
New value: hKxxxxxxxxxxxxxxxxpE
ブラウザから下記の URL で kibana のページにアクセスします。
| http://133.125.237.198:5601/ |

・「Elasticを構成して開始」画面で「手動で構成」ボタンを押す

・「アドレス」が「https://localhost:9200」であることを確認して「アドレスを確認」ボタンを押す

・「ユーザー名」「パスワード」の入力画面が出るので、下記を入力する
| ユーザー名: kibana_system パスワード: 前述で作成した kibana_system のパスワード 認証局: 「この証明書を認識し、信頼する」にチェックを入れる |
・「Elasticを設定」ボタンを押す

・「検証が必要です」画面が出るので、下記コマンドでコードを生成する
[root@kibana01 ~]# /usr/share/kibana/bin/kibana-verification-code
Your verification code is: 6X4 7X1
・生成したコードを画面に入力して「検証」ボタンを押す
設定の進捗画面が出ます。

最後に下記のようなメッセージのエラー画面が出ることがありますが、その場合はブラウザの画面を再読み込みしてください。
statusCode 503
error "Service Unavailable"
message "License information could not be obtained from Elasticsearch. Please check the logs for further details."

kibana のログイン画面が出れば正常です。

下記のアカウントでログインしてください。以後、kibana にはこのアカウントでログインします。
| ユーザー名: elastic パスワード: elasticsearch のインストール時に表示された管理者パスワード |

・「統合を追加して開始する」の画面で「独りで閲覧」を選択
ホーム画面が表示されます。

kibana がメモリを確保し続けて swap するようになるとパフォーマンスが落ちるため、kibana のメモリ上限を設定します。
[root@kibana01 ~]# vi /etc/kibana/node.options
ファイルに下記を追記します
--max-old-space-size=1024
kibana を再起動します
[root@kibana01 ~]# systemctl restart kibana
filebeat インストール
PGP キーは elasticsearch と同じなので、再度インストールする必要はありません。
リポジトリの設定をします。
[root@kibana01 ~]# vi /etc/yum.repos.d/elastic.repo
ファイルには下記の内容を記述します
[elastic-9.x]
name=Elastic repository for 9.x packages
baseurl=https://artifacts.elastic.co/packages/9.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
kibana と同様に、elasticsearch と同じバージョンの filebeat をインストールします。
[root@kibana01 ~]# dnf install filebeat-9.5.3
filebeat で、elasticsearch の接続について、下記の設定をおこないます。
・接続プロトコルを https で指定
・証明書検証をしない
・接続ユーザのアカウント設定
ユーザ: elastic
パスワード: elasticsearch のインストール時に表示された管理者パスワード
filebeat の設定ファイルを編集します。
[root@kibana01 ~]# vi /etc/filebeat/filebeat.yml
「output.elasticsearch:」のセクションに、下記を追記します。
yml ファイルなので、各行頭の空白文字数に注意してください。
protocol: "https"
ssl.verification_mode: "none"
username: "elastic"
password: "yPxxxxxxxxxxxxxxxx1w"
構文チェックをします。
[root@kibana01 ~]# filebeat test config
Config OK
elasticsearch への接続確認をします。
[root@kibana01 ~]# filebeat test output
elasticsearch: https://localhost:9200...
parse url... OK
connection...
parse host... OK
dns lookup... OK
addresses: ::1, 127.0.0.1
dial up... OK
TLS...
security... WARN server's certificate chain verification is disabled
handshake... OK
TLS version: TLSv1.3
dial up... OK
talk to server... OK
version: 9.5.3
上記のように表示されれば問題ありません。WARN が一件出ていますが、証明書検証なしに設定しているためです。
filebeat のセットアップを実施します。
[root@kibana01 ~]# filebeat setup
Overwriting lifecycle policy is disabled. Set `setup.ilm.overwrite: true` to overwrite.
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
Loaded Ingest pipelines
[root@kibana01 ~]#
少し時間がかかりますが、上記のように表示されれば正常に完了です。
もし、実行中に状況を確認したい場合は、messages ログを見ます。
[root@kibana01 ~]# tail -F /var/log/messages
system モジュール有効化と、filebeat のサービス起動
filebeat の動作確認として、secure ログを kibana から確認できるように filebeat を設定してみます。
filebeat の system モジュールを有効化します。
[root@kibana01 ~]# filebeat modules enable system
Enabled system
secure ログを読み込むように、system モジュールの auth を有効にします。
[root@kibana01 ~]# vi /etc/filebeat/modules.d/system.yml
下記を変更します。
変更前
| auth: enabled: false |
変更後
| auth: enabled: true |
構文チェックをします。
[root@kibana01 ~]# filebeat test config
Config OK
filebeat のサービスを有効にして、起動します。
# systemctl enable filebeat
# systemctl start filebeat
念のためステータスを確認します。
# systemctl status filebeat
何回かサーバに ssh でログイン/ログアウトなどをして、secure ログを更新します。
kibana にログインして確認します。
・左上のハンバーガーメニューを押す

・「Analytics」の「Dashboards」を選択

・検索ボックスに「filebeat system」と入力
・検索された結果から「[Filebeat System] SSH login attempts ECS」を選択
画面に ssh ログインのアクセスとログイン成功の件数の履歴が表示されます。

7:38 の成功は、自分がサーバに ssh でログインした履歴です。
こうやって見ると、結構 ssh アタックが来ているのがわかりますね。
皆さん、ssh 接続は鍵認証を必須にしてくださいね。
次回はさくらのウェブアクセラレータからのログを kibana で確認できるようにします。