kibana でさくらのウェブアクセラレータのログを確認してみた [第2回]

さくらのクラウド , 監視・運用 # さくらのウェブアクセラレータ

「kibana でさくらのウェブアクセラレータのログを確認してみた」の第2回です。

前回は elasticsearch、kibana、filebeat による環境を構築しました。


今回は、さくらのウェブアクセラレータを用意して、そのログを filebeat 経由で elasticsearch に取り込んでみます。

下記の作業をしていきます。

  • ウェブアクセラレータのオリジン作成
    オリジンは何でもよいのですが、今回はオブジェクトストレージのバケットを使用します。
  • ウェブアクセラレータのサイト追加
    サイトを作成してオリジンを設定します。
  • ウェブアクセラレータのログ保存設定
    ウェブアクセラレータのログはオブジェクトストレージに保存されます。保存先のバケットを作成し、ウェブアクセラレータのログ保存先として指定します。
  • ログを elasticsearch に取り込む
    filebeat を使って、オブジェクトストレージからログを取得し、elasticsearch に保存させます。

それでは作業していきましょう。

ウェブアクセラレータのオリジン用バケット作成

サイトの利用開始

まずはオブジェクトストレージでサイトの利用を開始します。

  • 「さくらのクラウドホーム」で「オブジェクトストレージ」を選択
  • 適宜、サイトを選択(今回は「石狩第1サイト」)
  • 「サイトの利用開始」で「OK」を選択

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

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

コンテンツ用のバケットの作成

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

  • 「さくらのクラウドホーム」で「オブジェクトストレージ」を選択
  • 適宜、サイトを選択(「石狩第1サイト」)
  • 左メニューで「バケット」を選択
  • 「バケットの追加」ボタンを押す
  • 下記を設定して、「追加」ボタンを押す
名前: webaccel01
(バケットの名前は適宜、使えるものを設定してください)


ウェブアクセラレータのオリジン向けの 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 と同様に作業します。

  • 「さくらのクラウドホーム」で「オブジェクトストレージ」を選択
  • 適宜、サイトを選択(今回は「石狩第1サイト」)
  • 左メニューで「バケット」を選択
  • 「バケットの追加」ボタンを押す

下記を設定して、「追加」ボタンを押します。

名前: 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 コマンドを使って確認しましょう。

下記コマンドで 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 で取得し、elasticsearch に保存します。


filebeat のオブジェクトストレージへのアクセス設定

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 の接続確認とログの取得確認

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 の画面でログ取り込みの確認

kibana の画面でも、elasticsearch に保存されたログを確認してみましょう。

前回作成した kibana の管理画面にログインします。

  • 左上のハンバーガーメニューを押す
  • 「Analytics」の「Discover」を選択
  • 左カラムの「利用可能なフィールド」にある「aws.s3.bucket.name」をクリック

「aws.s3.bucket.name」のポップアップが表示されます。

ここからウェブアクセラレータのログを確認するには、下記の2パターンがあります。

パターン1)ポップアップに「トップの値」が表示される場合

「トップの値」に「weblog01」が表示されるので、その右側の「+」アイコンを押します。

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

パターン2)ポップアップに「現在の選択のフィールドデータがありません」が表示される場合

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

「検索条件と一致する結果がありません」の画面が出ます。

「時間範囲全体を検索」ボタンを押します。

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


elasticsearch に保存されたウェブアクセラレータのログを画面に表示して確認することができました。

今回のまとめと次回の予定

今回は、filebeat を使って elasticsearch にウェブアクセラレータのログが入るところまで確認しました。

しかし、残念ながらログの情報がすべてひとつのテキストとなって message フィールドにだけ保存されているため、このデータは分析に使うことができません。

分析できるようにするためには、ログのテキストから適切に情報を拾って、フィールドに保存する必要があります。このために使用するのが pipeline になります。

フィールドにログのデータを保存したら、分析しやすいようにリストに表示するカラムを設定したり、集計機能を利用したりして、表現を工夫することができるようになります。このような表現を集めてひとつの画面にまとめたものをダッシュボードとして作成することも可能です。

次回は pipeline とダッシュボードの設定をおこないます。

この記事を書いた人

H.M.

ネットアシスト運用チーム 

さくらのクラウド検定 2026年 第1回試験 合格