@kyanny's blog

My thoughts, my life. Views/opinions are my own.

MinIO で詳細なアクセスログを取得する

MinIO というオブジェクトストレージ製品があって、Amazon S3 互換の API でアクセスできる。

ログは syslog なり STDOUT なりに出力されるが、デフォルトでは詳細なアクセスログは出ない。

詳細なアクセスログを見るには、 Webhook でログを外部に送る方法mc admin trace コマンドを使う方法がある。

mc admin trace コマンドの使い方を例示する。minio コマンドと mc コマンドはインストール済みとする。

1. minio server を起動する

MINIO_ROOT_USER=minio \
MINIO_ROOT_PASSWORD=minio123 \
minio server $(pwd) \
  --address 127.0.0.1:9000 \
  --console-address=127.0.0.1:9001

環境変数とコマンドラインオプションはなくても動く。

2. mc (minio client) の alias に server を追加する

mc コマンドは mc subcommand TARGET という書式で、TARGET には操作対象の MinIO サーバインスタンスの名称が入る。この名称は alias として自分で設定する。

mc alias set myserver http://127.0.0.1:9000 minio minio123

今回は myserver という alias を名付けた。

3. mc admin trace コマンドでログを見る

-a (--all) だと、一操作ごとに一行の簡潔なログが出る。

mc admin trace -a myserver
2021-08-04T11:34:13:000 [200 OK] s3.GetBucketLocation 127.0.0.1:9000/test/?location=  127.0.0.1         190µs       ↑ 77 B ↓ 444 B
2021-08-04T11:34:13:000 [200 OK] s3.HeadObject 127.0.0.1:9000/test/fact.py 127.0.0.1         832µs       ↑ 77 B ↓ 411 B
2021-08-04T11:34:13:000 [404 Not Found] s3.GetBucketObjectLockConfig 127.0.0.1:9000/test/?object-lock=  127.0.0.1         144µs       ↑ 77 B ↓ 649 B
2021-08-04T11:34:13:000 [200 OK] s3.HeadObject 127.0.0.1:9000/test/fact.py 127.0.0.1         405µs       ↑ 77 B ↓ 411 B
2021-08-04T11:34:13:000 [OS] os.MkdirAll 127.0.0.1:9000 /Users/kyanny/workspaces/minio-nas-gateway/.minio.sys/tmp/ba300c38-1fd8-4888-9e71-438237944ebd 17.874µs
2021-08-04T11:34:13:000 [OS] os.MkdirAll 127.0.0.1:9000 /Users/kyanny/workspaces/minio-nas-gateway/test 18.866µs
2021-08-04T11:34:13:000 [OS] os.Rename 127.0.0.1:9000 /Users/kyanny/workspaces/minio-nas-gateway/.minio.sys/tmp/ba300c38-1fd8-4888-9e71-438237944ebd/f1b57806-990c-42c9-aa98-b06daad8daf8 -> /Users/kyanny/workspaces/minio-nas-gateway/test/fact.py 156.442µs
2021-08-04T11:34:13:000 [200 OK] s3.PutObject 127.0.0.1:9000/test/fact.py 127.0.0.1         1.207ms      ↑ 580 B ↓ 325 B

-v (--verbose) をつけると、各操作ごとの HTTP リクエスト・レスポンスを含む詳細なログが出る。

127.0.0.1:9000  [OS os.MkdirAll] [2021-08-04T11:36:27:000] /Users/kyanny/workspaces/minio-nas-gateway/.minio.sys/tmp/ba300c38-1fd8-4888-9e71-438237944ebd 15.712µs
127.0.0.1:9000  [OS os.MkdirAll] [2021-08-04T11:36:27:000] /Users/kyanny/workspaces/minio-nas-gateway/test 20.066µs
127.0.0.1:9000  [OS os.Rename] [2021-08-04T11:36:27:000] /Users/kyanny/workspaces/minio-nas-gateway/.minio.sys/tmp/ba300c38-1fd8-4888-9e71-438237944ebd/076caf68-9463-4415-a99c-bd98347836af -> /Users/kyanny/workspaces/minio-nas-gateway/test/fact.py 238.732µs
127.0.0.1:9000 [REQUEST s3.PutObject] [2021-08-04T11:36:27:000] [Client IP: 127.0.0.1]
127.0.0.1:9000 PUT /test/fact.py
127.0.0.1:9000 Proto: HTTP/1.1
127.0.0.1:9000 Host: 127.0.0.1:9000
127.0.0.1:9000 X-Amz-Content-Sha256: STREAMING-AWS4-HMAC-SHA256-PAYLOAD
127.0.0.1:9000 X-Amz-Date: 20210804T023627Z
127.0.0.1:9000 X-Amz-Decoded-Content-Length: 287
127.0.0.1:9000 Authorization: AWS4-HMAC-SHA256 Credential=minio/20210804/us-east-1/s3/aws4_request,SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-decoded-content-length,Signature=6f291ec56d615d95ac7f104e985fb2406fb9e8d9fed06e697da26bf8242a76fe
127.0.0.1:9000 Content-Length: 461
127.0.0.1:9000 Content-Type: application/octet-stream
127.0.0.1:9000 User-Agent: MinIO (darwin; amd64) minio-go/v7.0.11 mc/RELEASE.2021-07-27T06-46-19Z
127.0.0.1:9000 <BODY>
127.0.0.1:9000 [RESPONSE] [2021-08-04T11:36:27:000] [ Duration 1.516ms  ↑ 580 B  ↓ 325 B ]
127.0.0.1:9000 200 OK
127.0.0.1:9000 Server: MinIO
127.0.0.1:9000 Vary: OriginAccept-Encoding
127.0.0.1:9000 X-Amz-Request-Id: 1697F9ED26965F30
127.0.0.1:9000 X-Xss-Protection: 1; mode=block
127.0.0.1:9000 Accept-Ranges: bytes
127.0.0.1:9000 Content-Length: 0
127.0.0.1:9000 ETag: "c75ac2f315aa4e0f9f73effab33f9d91"
127.0.0.1:9000 Content-Security-Policy: block-all-mixed-content
127.0.0.1:9000 Strict-Transport-Security: max-age=31536000; includeSubDomains
127.0.0.1:9000 X-Content-Type-Options: nosniff
127.0.0.1:9000 <BODY>
127.0.0.1:9000