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