本文介紹如何快速使用日志服務Python SDK完成常見操作,包括創(chuàng)建項目(Project)、創(chuàng)建日志庫(Logstore)、寫入日志和查詢日志等。
前提條件
已創(chuàng)建RAM用戶并完成授權。具體操作,請參見創(chuàng)建RAM用戶并完成授權。
已配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統(tǒng)配置環(huán)境變量。
重要阿里云賬號的AccessKey擁有所有API的訪問權限,建議您使用RAM用戶的AccessKey進行API訪問或日常運維。
強烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導致AccessKey泄露,威脅您賬號下所有資源的安全。
已完成日志服務Python SDK安裝。更多信息,請參見安裝Python SDK。
示例
直接編寫Python代碼采集日志
本示例中,創(chuàng)建一個SLSQuickStart.py文件,并調用接口分別完成創(chuàng)建Project、創(chuàng)建Logstore、創(chuàng)建索引、寫入日志數(shù)據(jù)和查詢日志數(shù)據(jù)。示例如下:
from aliyun.log import LogClient, PutLogsRequest, LogItem, GetLogsRequest, IndexConfig import time import os # 本示例從環(huán)境變量中獲取AccessKey ID和AccessKey Secret。 accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '') accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '') # 日志服務的服務接入點。此處以杭州為例,其它地域請根據(jù)實際情況填寫。 endpoint = "cn-hangzhou.log.aliyuncs.com" # 創(chuàng)建日志服務Client。 client = LogClient(endpoint, accessKeyId, accessKey) # Project名稱。 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 # 創(chuàng)建Project。 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) # 創(chuàng)建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) # 創(chuàng)建索引。 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寫入數(shù)據(jù)。 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) # 通過SQL查詢日志。 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__': # 創(chuàng)建Project。 create_project() # 創(chuàng)建Logstore。 create_logstore() # 創(chuàng)建索引。 create_index() # 向Logstore寫入數(shù)據(jù)。 put_logs() # 通過SQL查詢日志。 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日志。更多信息,請參見采集Python日志。
相關文檔
在調用API接口過程中,若服務端返回結果中包含錯誤信息,則表示調用API接口失敗。您可以參考API錯誤碼對照表查找對應的解決方法。更多信息,請參見API錯誤處理對照表。
阿里云OpenAPI開發(fā)者門戶提供調試、SDK、示例和配套文檔。通過OpenAPI,您無需手動封裝請求和簽名操作,就可以快速對日志服務API進行調試。更多信息,請參見OpenAPI開發(fā)者門戶。
為滿足越來越多的自動化日志服務配置需求,日志服務提供命令行工具CLI(Command Line Interface)。更多信息,請參見日志服務命令行工具CLI。
更多示例代碼,請參見Aliyun Log Python On GitHub。