kibana でさくらのウェブアクセラレータのログを確認してみた [第1回] | さくらのクラウドラボ by NETASSIST
オブジェクトストレージに保存されるさくらのウェブアクセラレータのログを、手軽に検索・閲覧できるようにするkibana活用法。elasticsearch・kibana・filebeatの構築手順を実機検証しながら解説します。
「kibana でさくらのウェブアクセラレータのログを確認してみた」の第2回です。
前回は elasticsearch、kibana、filebeat による環境を構築しました。
今回は、さくらのウェブアクセラレータを用意して、そのログを filebeat 経由で elasticsearch に取り込んでみます。
下記の作業をしていきます。
それでは作業していきましょう。
まずはオブジェクトストレージでサイトの利用を開始します。

アクセスキーID とシークレットアクセスキーが表示されるので、控えておきます。

また、画面のサイト情報に、リージョンと S3エンドポイントが表示されるので、控えておきます。

オブジェクトストレージにコンテンツ用のバケットを作成します。

| 名前: webaccel01 (バケットの名前は適宜、使えるものを設定してください) |

ウェブアクセラレータのオリジン向けの webaccel01 バケットができました。
適宜、コンテンツ用のファイルを用意して、バケットにアップロードします。

| ファイル: image.jpg アクセス権限: private 「注意事項を確認しました」にチェック |


コンテンツの画像がアップロードされました。
さくらのウェブアクセラレータでサイトの追加をします。
「サイト新規追加」画面で、下記の内容を入力します。
| ドメイン種別: サブドメイン サイトのタイトル: テストサイト リクエストプロトコル: http/https オリジン種別: オブジェクトストレージ バケット名: webaccel01 S3エンドポイント: (オブジェクトストレージの S3 エンドポイント) S3リージョン: (オブジェクトストレージのリージョン) アクセスキーID: (オブジェクトストレージのアクセスキーID) シークレットアクセスキー: (オブジェクトストレージのシークレットアクセスキー) ※その他は適宜設定 |


サイトの情報を確認します
公開ドメイン名を確認します。

ステータスが無効になっているので、有効に変更します。


ブラウザで Webにアクセスしてみます。
| アクセス先URL: http://XXXXXXXX.user.webaccel.jp/image.jpg ※「XXXXXXXX.user.webaccel.jp」には公開ドメイン名を指定します。 |
image.jpg がダウンロードできれば OK です。
ちなみに、ブラウザ画面にコンテンツを表示させたい場合は、オブジェクトストレージに保存したファイルの Content-Type を変更する必要があります。この方法については、下記の記事を参照してください。
オブジェクトストレージにログ保存用のバケットを追加します。
webaccel01 と同様に作業します。
下記を設定して、「追加」ボタンを押します。
| 名前: weblog01 (バケットの名前は適宜、使えるものを設定してください) |

ログ保存先の weblog01 のバケットができました。
さくらのウェブアクセラレータのログをオブジェクトストレージにアップロードする設定をします。
| アクセスログ: 「有効」にチェック S3エンドポイント: (オブジェクトストレージの S3 エンドポイント) S3リージョン: (オブジェクトストレージのリージョン) バケット名: weblog01 アクセスキーID: (オブジェクトストレージのアクセスキーID) シークレットアクセスキー: (オブジェクトストレージのシークレットアクセスキー) |


ログを生成するために、先ほどブラウザでコンテンツをダウンロードできた URL に、何回かアクセスしておきます。
ログは1時間ごとにオブジェクトストレージにアップロードされます。
最初のログがアップロードされると、オブジェクトストレージにフォルダが作成されます。
フォルダとファイル名は下記に仕様があります。
https://manual.sakura.ad.jp/cloud/webaccel/manual/settings-accesslog-upload.html#id16
今回生成されたログファイルのパスは下記でした。
sakura-webaccelerator/XXXXXXXX.user.webaccel.jp/2026/09/13/access-20260913T12.log.gz
※「XXXXXXXX.user.webaccel.jp」は公開ドメイン名
保存されたログファイルを aws コマンドを使って確認しましょう。
下記コマンドで AWS CLI をインストールします。
| curl -fsSL https://awscli.amazonaws.com/v2/install.sh | bash |
[root@kibana01 ~]# curl -fsSL https://awscli.amazonaws.com/v2/install.sh | bash
Resolving user-local install paths:
HOME=/root
XDG_DATA_HOME=<unset, using default>
XDG_BIN_HOME=<unset, using default>
aws-cli installer: warning: running as root without --system; installing to /root/.local/share/aws-cli with binaries in /root/.local/bin. If you used sudo, it may have reset environment variables like HOME and XDG_DATA_HOME/XDG_BIN_HOME.
Installing AWS CLI 2.36.44
Downloading AWS CLI installer from https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.36.44.zip?src=script-exe
######################################################################## 100.0%
Downloading AWS CLI signature from https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.36.44.zip.sig?src=script-exe
######################################################################## 100.0%
GPG signature verified.
You can now run: /root/.local/bin/aws --version
AWS CLI 2.36.44 installed to /root/.local/share/aws-cli
Ensure /root/.local/bin is on your PATH. When multiple installs exist, PATH order determines which 'aws' runs.
[root@kibana01 ~]#
オブジェクトストレージへのアクセス情報を設定します。
[root@kibana01 ~]# aws configure
Tip: You can deliver temporary credentials to the AWS CLI using your AWS Console session by running the command 'aws login'.
AWS Access Key ID [None]: (オブジェクトストレージのアクセスキーID)
AWS Secret Access Key [None]: (オブジェクトストレージのシークレットアクセスキー)
Default region name [None]: (オブジェクトストレージのリージョン)
Default output format [None]: json
[root@kibana01 ~]#
設定ファイルに、下記のようにエンドポイントの指定を追加します。
| endpoint_url = (オブジェクトストレージの S3 エンドポイント) |
[root@kibana01 ~]# vi ~/.aws/config
[root@kibana01 ~]# cat ~/.aws/config
[default]
region = jp-north-1
output = json
endpoint_url = https://s3.isk01.sakurastorage.jp <= ここを追記
[root@kibana01 ~]#
下記のコマンドで、オブジェクトストレージに接続できて、フォルダやファイルの一覧が見れることを確認します。
| aws s3 ls aws s3 ls (バケット名)/(ログファイルのパス) |
[root@kibana01 ~]# aws s3 ls
2026-09-13 10:21:10 webaccel01
2026-09-13 10:57:12 weblog01
[root@kibana01 ~]#
[root@kibana01 ~]# aws s3 ls weblog01/sakura-webaccelerator/XXXXXXXX.user.webaccel.jp/2026/09/13/access-20260913T12.log.gz
2026-09-13 13:00:44 433 access-20260913T12.log.gz
[root@kibana01 ~]#
下記のコマンドで、オブジェクトストレージからウェブアクセラレータのログをダウンロードしてみます。
| aws s3 cp s3://(バケット名)/(ログファイルのパス) /tmp/ |
[root@kibana01 ~]# aws s3 cp s3://weblog01/sakura-webaccelerator/XXXXXXXX.user.webaccel.jp/2026/09/13/access-20260913T12.log.gz /tmp/
download: s3://weblog01/sakura-webaccelerator/XXXXXXXX.user.webaccel.jp/2026/09/13/access-20260913T12.log.gz to ../tmp/access-20260913T12.log.gz
[root@kibana01 ~]#
ダウンロードしたログの内容を確認します。
[root@kibana01 ~]# zcat /tmp/access-20260913T12.log.gz
{"time":"2026-09-13T12:06:34+09:00","http_host":"XXXXXXXX.user.webaccel.jp","scheme":"http","remote_addr":"122.26.94.15","remote_port":"56446","remote_user":"","request":"GET /image.jpg HTTP/1.1","status":"200","bytes_sent":"36122","body_bytes_sent":"35578","referer":"","x_cache":"HIT","msec":"1789268794.939","request_id":"35d8cc14582cf3a5b2615ced13fb7d16","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0"}
{"time":"2026-09-13T12:06:39+09:00","http_host":"XXXXXXXX.user.webaccel.jp","scheme":"http","remote_addr":"122.26.94.15","remote_port":"56446","remote_user":"","request":"GET /image.jpg HTTP/1.1","status":"200","bytes_sent":"36091","body_bytes_sent":"35578","referer":"","x_cache":"HIT","msec":"1789268799.066","request_id":"8be0eabacc1fd6216792ea7e9ed641df","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0"}
{"time":"2026-09-13T12:06:44+09:00","http_host":"XXXXXXXX.user.webaccel.jp","scheme":"http","remote_addr":"122.26.94.15","remote_port":"57460","remote_user":"","request":"GET /image.jpg HTTP/1.1","status":"200","bytes_sent":"36091","body_bytes_sent":"35578","referer":"","x_cache":"HIT","msec":"1789268804.548","request_id":"410f3b5fe7677a214f6c85604c0418b9","user_agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0"}
[root@kibana01 ~]#
1件だけ json の内容を整形して出力して、ログの内容を確認してみましょう。
[root@kibana01 ~]# zcat /tmp/access-20260913T12.log.gz | head -1 | jq .
{
"time": "2026-09-13T12:06:34+09:00",
"http_host": "XXXXXXXX.user.webaccel.jp",
"scheme": "http",
"remote_addr": "122.26.94.15",
"remote_port": "56446",
"remote_user": "",
"request": "GET /image.jpg HTTP/1.1",
"status": "200",
"bytes_sent": "36122",
"body_bytes_sent": "35578",
"referer": "",
"x_cache": "HIT",
"msec": "1789268794.939",
"request_id": "35d8cc14582cf3a5b2615ced13fb7d16",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0"
}
[root@kibana01 ~]#
aws コマンドでログをダウンロードできたことが確認できました。
オブジェクトストレージに保存されているログを filebeat で取得し、elasticsearch に保存します。
filebeat が正しく接続できることを確認するために、filebeat を手動で実行します。
このため、一旦、filebeat サービスを停止します。
[root@kibana01 ~]# systemctl stop filebeat
filebeat ではログ入力の設置ファイルを特定のフォルダ配下に分割して配置できます。デフォルトでは有効になっていないため、有効にする設定を記述します。
[root@kibana01 ~]# vi /etc/filebeat/filebeat.yml
下記の内容をファイルの末尾に追記します。yaml ファイルなので、行頭のスペースも正しく入れてください。
filebeat.config.inputs:
enabled: true
path: /etc/filebeat/inputs.d/*.yml
reload.enabled: true
reload.period: 60s
上記では、フォルダ内の設定ファイルの 60秒ごとの定期リロードを有効にしています。これは、後の回で設定ファイルの定期更新をおこなう予定があるためです。
上記の path で指定しているフォルダを作成します。
[root@kibana01 ~]# mkdir /etc/filebeat/inputs.d
上記のフォルダに、オブジェクトストレージへアクセスするための設定ファイルを作成します。
[root@kibana01 ~]# vi /etc/filebeat/inputs.d/aws-s3.yml
作成したファイル内に下記の内容を記述します。オブジェクトストレージは aws の s3 互換であるため、type は aws-s3 を使用します。yaml ファイルなので、行頭のスペースも正しく入れてください。
- type: aws-s3
non_aws_bucket_name: weblog01
endpoint: (オブジェクトストレージの S3 エンドポイント)
region: (オブジェクトストレージのリージョン)
access_key_id: (オブジェクトストレージで控えたアクセスキーID)
secret_access_key: (オブジェクトストレージで控えたシークレットアクセスキー)
number_of_workers: 5
bucket_list_interval: 300s
構文チェックをします。
[root@kibana01 ~]# filebeat test config
Config OK
filebeat でオブジェクトストレージへの接続を確認し、elasticsearch に保存されたログを確認します。
filebeat がオブジェクトストレージからのデータを処理したか確認するために、もうひとつ別のターミナルを開いてサーバに接続し、下記のコマンドを実行しておきます。
[root@kibana01 ~]# tail -F /var/lib/filebeat/registry/filebeat/log.json | grep aws-s3
/var/lib/filebeat/registry/filebeat/log.json には、filebeat で処理したログファイルの履歴が記録されています。
filebeat を実行して「aws-s3」タイプのログが処理されると、上記のコマンドがログファイルの情報を出力します。
もとのターミナルで filebeat を手動実行します。
[root@kibana01 ~]# filebeat -e -d "*" > log.txt 2>&1
実行時のログは log.txt に保存されます。うまくいかないときには log.txt を確認してください。
tail を実行しているターミナルで下記のような表示が出たら、オブジェクトストレージからのログファイル取得が完了しています。
{"k":"filebeat::aws-s3::state::weblog01sakura-webaccelerator/XXXXXXXX.user.webaccel.jp/2026/09/13/access-20260913T12.log.gz"0e6d1a8f5f95b54e9f62be28835707f8"2026-09-13 04:00:44.429 +0000 UTC","v":{"etag":""0e6d1a8f5f95b54e9f62be28835707f8"","last_modified":[281471110743360,1789272044],"stored":true,"failed":false,"bucket":"weblog01","key":"sakura-webaccelerator/XXXXXXXX.user.webaccel.jp/2026/09/13/access-20260913T12.log.gz"}}
上記の表示が確認できたら「Ctrl-C」で filebeat コマンドを終了させます。
なお、filebeat を再度実行した場合、filebeat は既に実行済みのログファイルに対しては処理せずにスキップします。log.json ファイルに処理完了で記録されたログファイルは重複処理しないように filebeat が制御しているためです。
もし filebeat にオブジェクトストレージからのログファイルを再度処理させる場合は、下記のようなコマンドで log.json ファイル中の処理完了フラグを落とす必要があります。
[root@kibana01 ~]# sed -i -r -e '/aws-s3/ s/"stored":true/"stored":false/' /var/lib/filebeat/registry/filebeat/log.json
elasticsearch に保存されたログを確認してみましょう。下記のコマンドを実行します。
[root@kibana01 ~]# curl -ks --netrc 'https://localhost:9200/filebeat-*/_search?pretty' \
-H 'Content-Type: application/json' \
-d '{
"size" : 1,
"query": {
"term": {
"input.type": "aws-s3"
}
}
}'
下記のような結果が取得できます。
{
"took" : 2,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 3,
"relation" : "eq"
},
"max_score" : 9.363479,
"hits" : [
{
"_index" : ".ds-filebeat-9.5.3-2026.09.05-000001",
"_id" : "1789272044429000000-6095b4758c-000000000000",
"_score" : 9.363479,
"_source" : {
"@timestamp" : "2026-09-14T14:58:13.806Z",
"log" : {
"file" : {
"path" : "https://weblog01.s3.isk01.sakurastorage.jp/sakura-webaccelerator/XXXXXXXX.user.webaccel.jp/2026/09/13/access-20260913T12.log.gz"
},
"offset" : 0
},
"ecs" : {
"version" : "8.0.0"
},
"message" : "{\"time\":\"2026-09-13T12:06:34+09:00\",\"http_host\":\"XXXXXXXX.user.webaccel.jp\",\"scheme\":\"http\",\"remote_addr\":\"122.26.94.15\",\"remote_port\":\"56446\",\"remote_user\":\"\",\"request\":\"GET /image.jpg HTTP/1.1\",\"status\":\"200\",\"bytes_sent\":\"36122\",\"body_bytes_sent\":\"35578\",\"referer\":\"\",\"x_cache\":\"HIT\",\"msec\":\"1789268794.939\",\"request_id\":\"35d8cc14582cf3a5b2615ced13fb7d16\",\"user_agent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0\"}",
"aws" : {
"s3" : {
"bucket" : {
"name" : "weblog01",
"arn" : "weblog01"
},
"object" : {
"key" : "sakura-webaccelerator/XXXXXXXX.user.webaccel.jp/2026/09/13/access-20260913T12.log.gz"
}
}
},
"cloud" : {
"region" : "jp-north-1",
"provider" : ""
},
"input" : {
"type" : "aws-s3"
},
"host" : {
"ip" : [
"133.125.237.198",
"fe80::9ea3:baff:fe33:97eb"
],
"mac" : [
"9C-A3-BA-33-97-EB"
],
"hostname" : "kibana01",
"architecture" : "x86_64",
"os" : {
"kernel" : "5.14.0-687.5.4.el9_8.x86_64",
"codename" : "Olive Jaguar",
"type" : "linux",
"platform" : "almalinux",
"version" : "9.8 (Olive Jaguar)",
"family" : "redhat",
"name" : "AlmaLinux"
},
"id" : "ac716e91a5b14a1688ad9d8cd39d14b1",
"name" : "kibana01",
"containerized" : false
},
"agent" : {
"ephemeral_id" : "df4b9518-d800-4a16-bb07-86b4a264d349",
"id" : "c54de01d-49a2-4768-80f5-167a7192297e",
"name" : "kibana01",
"type" : "filebeat",
"version" : "9.5.3"
}
}
}
]
}
}
hits.total.value の値が、保存されたログの件数です。
また、リクエストで size を 1 に設定したので、保存されたログのレコードのうち、1件だけが hits.hits[0] に表示されています。size の値を増やせば、表示されるドキュメント件数も増やせます。
hits.hits[0]._source.message に、実際のログの内容がテキストで保存されています。
下記のコマンドで絞り込めます。
[root@kibana01 ~]# curl -ks --netrc 'https://localhost:9200/filebeat-*/_search?pretty' \
-H 'Content-Type: application/json' \
-d '{
"size" : 1,
"query": {
"term": {
"input.type": "aws-s3"
}
}
}' \
| jq .hits.hits[0]._source.message
下記がコマンドの結果です。
"{\"time\":\"2026-09-13T12:06:34+09:00\",\"http_host\":\"XXXXXXXX.user.webaccel.jp\",\"scheme\":\"http\",\"remote_addr\":\"122.26.94.15\",\"remote_port\":\"56446\",\"remote_user\":\"\",\"request\":\"GET /image.jpg HTTP/1.1\",\"status\":\"200\",\"bytes_sent\":\"36122\",\"body_bytes_sent\":\"35578\",\"referer\":\"\",\"x_cache\":\"HIT\",\"msec\":\"1789268794.939\",\"request_id\":\"35d8cc14582cf3a5b2615ced13fb7d16\",\"user_agent\":\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:155.0) Gecko/20100101 Firefox/155.0\"}"
kibana の画面でも、elasticsearch に保存されたログを確認してみましょう。
前回作成した kibana の管理画面にログインします。

「aws.s3.bucket.name」のポップアップが表示されます。
ここからウェブアクセラレータのログを確認するには、下記の2パターンがあります。
「トップの値」に「weblog01」が表示されるので、その右側の「+」アイコンを押します。

「ドキュメント」の欄にログが表示されます。

ポップアップの右上の「フィールド表示のフィルター」アイコンを押します。

「検索条件と一致する結果がありません」の画面が出ます。
「時間範囲全体を検索」ボタンを押します。

「ドキュメント」の欄にログが表示されます。

elasticsearch に保存されたウェブアクセラレータのログを画面に表示して確認することができました。
今回は、filebeat を使って elasticsearch にウェブアクセラレータのログが入るところまで確認しました。
しかし、残念ながらログの情報がすべてひとつのテキストとなって message フィールドにだけ保存されているため、このデータは分析に使うことができません。
分析できるようにするためには、ログのテキストから適切に情報を拾って、フィールドに保存する必要があります。このために使用するのが pipeline になります。
フィールドにログのデータを保存したら、分析しやすいようにリストに表示するカラムを設定したり、集計機能を利用したりして、表現を工夫することができるようになります。このような表現を集めてひとつの画面にまとめたものをダッシュボードとして作成することも可能です。
次回は pipeline とダッシュボードの設定をおこないます。