aliyun-log-cliの使い方

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を作成します。以下が参考になります。

asmsuechan.hatenablog.com

画面からポチポチしてLogstoreとAPI Gatewayを紐付けます。「データ・インポート・ウイザード」をクリックします。

f:id:asmsuechan:20180720134754p:plain

次の画面のクラウドサービスでAPI Gatewayを選択してRAMを適切に設定します。

ログ使用モードの「検索」で見るとちゃんとアクセスログが送信されていることが確認できました。

f:id:asmsuechan:20180720135117p:plain

ログの取得

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を連携することでサーバレスなシステムを運用しやすくなります。