使用Python SDK管理項(xiàng)目Project
項(xiàng)目(Project)是日志服務(wù)的資源管理單元,包含Logstore、MetricStore和機(jī)器組等資源,同時(shí)也是您訪問日志服務(wù)資源的入口。本文通過代碼示例介紹如何創(chuàng)建、修改、查詢、刪除Project等。
前提條件
已開通日志服務(wù)。更多信息,請(qǐng)參見開通日志服務(wù)。
已創(chuàng)建RAM用戶并完成授權(quán)。具體操作,請(qǐng)參見創(chuàng)建RAM用戶并完成授權(quán)。
已配置環(huán)境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請(qǐng)參見在Linux、macOS和Windows系統(tǒng)配置環(huán)境變量。
重要阿里云賬號(hào)的AccessKey擁有所有API的訪問權(quán)限,建議您使用RAM用戶的AccessKey進(jìn)行API訪問或日常運(yùn)維。
強(qiáng)烈建議不要把AccessKey ID和AccessKey Secret保存到工程代碼里,否則可能導(dǎo)致AccessKey泄露,威脅您賬號(hào)下所有資源的安全。
已安裝日志服務(wù)Python SDK。具體操作,請(qǐng)參見安裝Python SDK。
注意事項(xiàng)
本示例以華東1(杭州)的公網(wǎng)Endpoint為例,其公網(wǎng)Endpoint為https://cn-hangzhou.log.aliyuncs.com
。如果您通過與Project同地域的其他阿里云產(chǎn)品訪問日志服務(wù),請(qǐng)使用內(nèi)網(wǎng)Endpointhttps://cn-hangzhou-intranet.log.aliyuncs.com
。關(guān)于日志服務(wù)支持的地域與Endpoint的對(duì)應(yīng)關(guān)系,請(qǐng)參見服務(wù)入口。
創(chuàng)建Project示例代碼
以下代碼用于創(chuàng)建名為ali-test-project-python的Project。
from aliyun.log import LogClient
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', '')
# 日志服務(wù)的服務(wù)接入點(diǎn)。此處以杭州為例,其它地域請(qǐng)根據(jù)實(shí)際情況填寫。
endpoint = "cn-hangzhou.log.aliyuncs.com"
# 創(chuàng)建日志服務(wù)Client。
client = LogClient(endpoint, accessKeyId, accessKey)
# Project名稱。
project_name = "ali-test-project-python"
# 創(chuàng)建Project。
def create_project():
print("ready to create project %s" %project_name)
client.create_project(project_name, project_des="this is a project created from ide.")
print("create project %s success " %project_name)
# 查詢Project。
def get_project():
print("ready to get project")
res = client.get_project(project_name)
print("the project name is :" + res.get_projectname())
print("the project region is :" + res.get_region())
print("the project create time is :" + res.get_create_time())
print("the project status is :" + res.get_status())
print("the project desc is :" + res.get_description())
print("get project success ")
if __name__ == '__main__':
# 創(chuàng)建Project。
create_project()
# 查詢Project。
get_project()
預(yù)期結(jié)果如下:
ready to create project ali-test-project-python
create project ali-test-project-python success
ready to get project
the project name is :ali-test-project-python
the project region is :cn-hangzhou
the project create time is :2022-12-12 17:45:57
the project status is :Normal
the project desc is :this is a project created from ide.
get project success
查詢所有Project示例代碼
以下代碼用于查詢所有Project。
from aliyun.log import LogClient, ListProjectResponse
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', '')
# 日志服務(wù)的服務(wù)接入點(diǎn)。此處以杭州為例,其它地域請(qǐng)根據(jù)實(shí)際情況填寫。
endpoint = "cn-hangzhou.log.aliyuncs.com"
# 創(chuàng)建日志服務(wù)Client。
client = LogClient(endpoint, accessKeyId, accessKey)
if __name__ == '__main__':
# 查詢所有Project列表。
print("ready to list project")
res = client.list_project(0, 100, "")
for project in res.get_projects():
print(project)
print("list project success")
預(yù)期結(jié)果如下:
ready to list project
{'projectName': 'ali-test-project-python', 'status': 'Normal', 'owner': '', 'description': '', 'region': 'cn-hangzhou', 'createTime': '1660810539', 'lastModifyTime': '1665978308'}
{'projectName': 'acktest', 'status': 'Normal', 'owner': '', 'description': '', 'region': 'cn-hangzhou', 'createTime': '1659084879', 'lastModifyTime': '1665978308'}
{'projectName': 'k8s-log-c143ee0f20b634206bf931507e0785394', 'status': 'Normal', 'owner': '', 'description': '', 'region': 'cn-hangzhou', 'createTime': '1659078881', 'lastModifyTime': '1665978308'}
{'projectName': 'sls-alert-1379186349531844-cn-hangzhou', 'status': 'Normal', 'owner': '', 'description': '', 'region': 'cn-hangzhou', 'createTime': '1658715011', 'lastModifyTime': '1665978308'}
{'projectName': 'k8s-log-c16bb522e6c794809bcc87182ea45246a', 'status': 'Normal', 'owner': '', 'description': 'k8s log project, created by alibaba cloud log controller', 'region': 'cn-hangzhou', 'createTime': '1657265089', 'lastModifyTime': '1665978308'}
list project success
查詢Project中日志示例代碼
以下代碼用于查詢指定Project中指定Logstore的日志。
from aliyun.log import LogClient, GetProjectLogsRequest
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', '')
# 日志服務(wù)的服務(wù)接入點(diǎn)。此處以杭州為例,其它地域請(qǐng)根據(jù)實(shí)際情況填寫。
endpoint = "cn-hangzhou.log.aliyuncs.com"
# 創(chuàng)建日志服務(wù)Client。
client = LogClient(endpoint, accessKeyId, accessKey)
# Project名稱。
project_name = "ali-test-project"
# Logstore名稱。
logstore_name = "ali-test-logstore"
if __name__ == '__main__':
print("ready to get project log" + project_name)
# 輸入SQL語句,用于查詢某時(shí)間區(qū)間TOP10的請(qǐng)求Host數(shù)量。
sql = "SELECT host, COUNT(*) as pv FROM " + logstore_name + " where __time__ > 1670899865 and __time__ <1670900765 group by host order by pv limit 10"
request = GetProjectLogsRequest(project_name, sql, False)
response = client.get_project_logs(request)
print(response)
for QueriedLog in response.get_logs():
print(QueriedLog.get_contents())
print("get project %s log success " %project_name)
預(yù)期結(jié)果如下:
ready to get project logali-test-project
{'host': 'www.example.aliyundoc.com', 'pv': '1'}
{'host': 'www.demo.aliyundoc.com', 'pv': '1'}
{'host': 'www.learn.aliyundoc.com', 'pv': '1'}
{'host': 'www.guide.aliyundoc.com', 'pv': '1'}
{'host': 'www.developer.aliyundoc.com', 'pv': '1'}
{'host': 'www.pull.aliyundoc.com', 'pv': '1'}
{'host': 'www.push.aliyundoc.com', 'pv': '1'}
{'host': 'www.playback.aliyundoc.com', 'pv': '1'}
{'host': 'www.replay.aliyundoc.com', 'pv': '1'}
{'host': 'www.webview.aliyundoc.com', 'pv': '1'}
get project ali-test-project log success
刪除Project示例代碼
以下代碼用于刪除名為ali-test-project-python的Project。
from aliyun.log import LogClient
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', '')
# 日志服務(wù)的服務(wù)接入點(diǎn)。此處以杭州為例,其它地域請(qǐng)根據(jù)實(shí)際情況填寫。
endpoint = "cn-hangzhou.log.aliyuncs.com"
# 創(chuàng)建日志服務(wù)Client。
client = LogClient(endpoint, accessKeyId, accessKey)
if __name__ == '__main__':
# Project名稱。
project_name = "ali-test-project-python"
# 刪除Project。
print("ready to delete project")
client.delete_project(project_name)
print("delete project %s success " %project_name)
預(yù)期結(jié)果如下:
ready to delete project
delete project ali-test-project-python success
相關(guān)文檔
在調(diào)用API接口過程中,若服務(wù)端返回結(jié)果中包含錯(cuò)誤信息,則表示調(diào)用API接口失敗。您可以參考API錯(cuò)誤碼對(duì)照表查找對(duì)應(yīng)的解決方法。更多信息,請(qǐng)參見API錯(cuò)誤處理對(duì)照表。
阿里云OpenAPI開發(fā)者門戶提供調(diào)試、SDK、示例和配套文檔。通過OpenAPI,您無需手動(dòng)封裝請(qǐng)求和簽名操作,就可以快速對(duì)日志服務(wù)API進(jìn)行調(diào)試。更多信息,請(qǐng)參見OpenAPI開發(fā)者門戶。
為滿足越來越多的自動(dòng)化日志服務(wù)配置需求,日志服務(wù)提供命令行工具CLI(Command Line Interface)。更多信息,請(qǐng)參見日志服務(wù)命令行工具CLI。
關(guān)于Project API接口說明,請(qǐng)參見如下:
更多示例代碼,請(qǐng)參見Aliyun Log Python SDK on GitHub。