このトピックでは、Simple Log Service の Python SDK を使用して、プロジェクトの作成、Logstore の作成、ログの書き込み、ログのクエリなどの一般的な操作を実行する方法について説明します。
前提条件
RAM ユーザーを作成し、権限を付与します。 詳細については、「RAM ユーザーの作成と権限付与」をご参照ください。
環境変数 ALIBABA_CLOUD_ACCESS_KEY_ID と ALIBABA_CLOUD_ACCESS_KEY_SECRET を設定します。 詳細については、「Linux、macOS、および Windows で環境変数を設定する」をご参照ください。
重要Alibaba Cloud アカウント (root ユーザー) の AccessKey ペアは、すべての API オペレーションに対する完全な権限を付与します。 API 呼び出しや日常の O&M (運用保守) には、RAM ユーザーの AccessKey ペアを使用することを推奨します。
セキュリティ上の理由から、AccessKey ID と AccessKey Secret をプロジェクトコードにハードコーディングしないことを強く推奨します。 認証情報をハードコーディングすると、意図せず漏洩し、アカウント内のすべてのリソースのセキュリティが危険にさらされる可能性があります。
Simple Log Service の Python SDK をインストールします。 詳細については、「Simple Log Service の Python SDK のインストール」をご参照ください。
使用例
Python コードを記述してログを収集
この例では、SLSQuickStart.py という名前のファイルを作成します。 このスクリプトは API オペレーションを呼び出して、プロジェクトの作成、Logstore の作成、インデックスの作成、ログデータの書き込み、ログデータのクエリを実行します。 次のコードに例を示します。
from aliyun.log import LogClient, PutLogsRequest, LogItem, GetLogsRequest, IndexConfig import time import os # この例では、環境変数から AccessKey ID と AccessKey Secret を取得します。 accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '') accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '') # Simple Log Service のエンドポイント。 この例では、中国 (杭州) リージョンのエンドポイントを使用します。 実際のエンドポイントに置き換えてください。 endpoint = "cn-hangzhou.log.aliyuncs.com" # Simple Log Service クライアントを作成します。 client = LogClient(endpoint, accessKeyId, accessKey) # プロジェクトの名前。 project_name = "aliyun-test-project" # Logstore の名前。 logstore_name = "aliyun-test-logstore" # クエリ文。 query = "*| select dev,id from " + logstore_name # インデックス設定。 logstore_index = {'line': { 'token': [',', ' ', "'", '"', ';', '=', '(', ')', '[', ']', '{', '}', '?', '@', '&', '<', '>', '/', ':', '\n', '\t', '\r'], 'caseSensitive': False, 'chn': False}, 'keys': {'dev': {'type': 'text', 'token': [',', ' ', "'", '"', ';', '=', '(', ')', '[', ']', '{', '}', '?', '@', '&', '<', '>', '/', ':', '\n', '\t', '\r'], 'caseSensitive': False, 'alias': '', 'doc_value': True, 'chn': False}, 'id': {'type': 'long', 'alias': '', 'doc_value': True}}, 'log_reduce': False, 'max_text_len': 2048} # from_time と to_time パラメーターは、クエリの時間範囲を UNIX タイムスタンプ形式で指定します。 from_time = int(time.time()) - 3600 to_time = time.time() + 3600 # プロジェクトを作成します。 def create_project(): print("ready to create project %s" % project_name) client.create_project(project_name, project_des="") print("create project %s success " % project_name) time.sleep(60) # Logstore を作成します。 def create_logstore(): print("ready to create logstore %s" % logstore_name) client.create_logstore(project_name, logstore_name, ttl=3, shard_count=2) print("create logstore %s success " % project_name) time.sleep(30) # インデックスを作成します。 def create_index(): print("ready to create index for %s" % logstore_name) index_config = IndexConfig() index_config.from_json(logstore_index) client.create_index(project_name, logstore_name, index_config) print("create index for %s success " % logstore_name) time.sleep(60 * 2) # Logstore にデータを書き込みます。 def put_logs(): print("ready to put logs for %s" % logstore_name) log_group = [] for i in range(0, 100): log_item = LogItem() contents = [ ('dev', 'test_put'), ('id', str(i)) ] log_item.set_contents(contents) log_group.append(log_item) request = PutLogsRequest(project_name, logstore_name, "", "", log_group, compress=False) client.put_logs(request) print("put logs for %s success " % logstore_name) time.sleep(60) # ログをクエリします。 def get_logs(): print("ready to query logs from logstore %s" % logstore_name) request = GetLogsRequest(project_name, logstore_name, from_time, to_time, query=query) response = client.get_logs(request) for log in response.get_logs(): for k, v in log.contents.items(): print("%s : %s" % (k, v)) print("*********************") if __name__ == '__main__': # プロジェクトを作成します。 create_project() # Logstore を作成します。 create_logstore() # インデックスを作成します。 create_index() # Logstore にデータを書き込みます。 put_logs() # ログをクエリします。 get_logs()出力例:
ready to create project aliyun-test-project create project aliyun-test-project success ready to create logstore aliyun-test-logstore create logstore aliyun-test-project success ready to create index for aliyun-test-logstore create index for aliyun-test-logstore success ready to put logs for aliyun-test-logstore put logs for aliyun-test-logstore success ready to query logs from logstore aliyun-test-logstore dev : test_put id : 0 ********************* dev : test_put id : 1 ********************* dev : test_put id : 2 ********************* dev : test_put id : 3 ********************* ........その他のコード例については、aliyun-log-python-sdk をご参照ください。
Logtail を使用して Python ログを収集
Logtail を使用して、Python logging モジュールからログを収集できます。 詳細については、「Python ログの収集」をご参照ください。
参照
API 呼び出しが失敗した場合、サーバーはトラブルシューティングに使用できるエラーコードを返します。 詳細については、「API エラーコード」をご参照ください。
独自の SDK に加えて、Simple Log Service は一般的な Alibaba Cloud SDK もサポートしています。 Alibaba Cloud SDK の使用方法の詳細については、Simple Log Service SDK Center - Alibaba Cloud OpenAPI Developer Portal をご参照ください。
Simple Log Service は、自動設定のためのコマンドラインインターフェイス (CLI) も提供しています。 詳細については、「Simple Log Service CLI」をご参照ください。