AlibabaCloudのLog ServiceをCLIから操作するツールであるaliyun-log-cliを使ってみます。
aliyunlogの設定
ドキュメントを参考にaliyunlogを設定します。
なお、ドキュメントのエンドポイントは間違っています(2018/07/20)。エンドポイントはこちらを参考にしてください。
$ aliyunlog configure Invalid parameters. Usage: aliyun configure <secure_id> <secure_key> <endpoint> [<client_name>] aliyun configure [--format-output=json] [--default-client=<client_name>] [--decode-output=utf8,latin1] $ aliyunlog configure LTAxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx cn-shanghai.log.aliyuncs.com
設定した情報は~/.aliyunlogcli
に保存されます。
プロジェクトの作成
create_project
でプロジェクトを作成します。
$ aliyunlog log create_project --project_name="my-project" --project_des="my project"
descriptionは必須なんですね。
my-project
という名前のプロジェクトが作成されたことをget_project
で確認します。
$ aliyunlog log get_project --project_name="my-project" {"createTime": "2018-07-20 12:33:38", "description": "my project", "lastModifyTime": "2018-07-20 12:33:38", "owner": "5326127221743842", "projectName": "my-project", "region": "cn-shanghai", "status": "Normal"}
logstoreの作成
create_logstore
を使ってlogstoreを作成します。
$ aliyunlog log create_logstore --project_name="my-project" --logstore_name="my-logstore"
my-project
内にmy-logstore
が作成されたことをget_logstore
で確認します。
$ aliyunlog log get_logstore --project_name="my-project" --logstore_name="my-logstore" {"autoSplit": false, "createTime": 1532061300, "enable_tracking": false, "lastModifyTime": 1532061300, "logstoreName": "my-logstore", "maxSplitShard": 0, "shardCount": 2, "ttl": 30}
API Gatewayと紐付ける
まずAPI Gatewayを作成します。以下が参考になります。
画面からポチポチしてLogstoreとAPI Gatewayを紐付けます。「データ・インポート・ウイザード」をクリックします。
次の画面のクラウドサービスでAPI Gateway
を選択してRAMを適切に設定します。
ログ使用モードの「検索」で見るとちゃんとアクセスログが送信されていることが確認できました。
ログの取得
aliyunlogを使ってログを取得します。
$ aliyunlog log get_logs --request="{\"topic\": \"\", \"logstore\": \"my-log-store\", \"project\": \"my-logservice\", \"toTime\": \"2018-07-21 13:10:10\", \"offset\": \"0\", \"query\": \"*\", \"line\": \"10\", \"fromTime\": \"2018-07-17 08:08:08\", \"reverse\":\"true\"}" [{"__source__": "log_service", "__time__": "1532060533", "__topic__": "", "apiGroupName": "HttpFunctionGroup", "apiGroupUid": "bee62351bf0446e4adb717424a54a4f3", "apiName": "hello_get", "apiStageName": "RELEASE", "apiStageUid": "040f58293163437e806a23891dc74b48", "apiUid": "c4bb4b9233d241bead52df248ad02993", "appId": "", "appName": "", "clientIp": "133.26.40.24", "domain": "bee62351bf0446e4adb717424a54a4f3-cn-shanghai.alicloudapi.com", "errorMessage": "OK", "exception": "", "httpMethod": "GET", "path": "/", "providerAliUid": "5326127221743842", "region": "cn-shanghai", "requestHandleTime": "2018-07-20T04:22:11Z", "requestId": "03D8528D-A294-4919-AC36-A889688FBECA", "requestSize": "284", "responseSize": "13", "serviceLatency": "85", "statusCode": "200"}]
取得できました。
まとめ
Function ComputeとLogServiceを連携することでサーバレスなシステムを運用しやすくなります。