使用 Python 客户端
您可以使用 Python 客户端管理 IBM Cloud Monitoring 服务。 该客户端也称为 sdcclient。
这些说明适用于 Python 版本 3.x。
要管理与默认团队相关联的资源,请使用 IAM 作为身份验证方法。
要管理与团队相关联的资源,必须使用团队激活的监控 API 令牌。
步骤 1. 安装 Python 客户端
先决条件
使用 Python 3 或更高版本时,请安装以下 Python 软件包:
-
运行以下命令安装
request
软件包:pip3 install requests
-
运行以下命令安装
pyyaml
软件包:python3 -m pip install pyyaml
使用 pip 安装 Python 客户端
在终端上运行以下 comnmnand:
sddclient 版本必须至少为 0.9.x。
# sddclient version must be at least 0.9.0
pip3 install sdcclient
从 GitHub repo 安装 Python 客户端
完成以下步骤:
-
创建一个文件夹来复制客户端代码。
mkdir python-client && cd python-client
-
克隆存储库。
git clone https://github.com/sysdiglabs/sysdig-sdk-python.git
-
创建一个空的 Python 脚本。
touch script.py
-
在验证
python-client
文件夹的内容时,确认python-sdc-client/script.py
已列出。ls
步骤 2. 在 Python 脚本中引用 Python 客户端
使用 pip 引用已安装的 Python 客户端
在 Python 脚本中添加以下语句,即可引用 Python 客户端:
from sdcclient import IbmAuthHelper, SdMonitorClient
引用通过克隆 GitHub repo 安装的 Python 客户端
在 Python 脚本中添加以下条目,以便将 GitHub 克隆软件包导入脚本:
import sys
sys.path.append("python-sdc-client")
from sdcclient import IbmAuthHelper, SdMonitorClient
步骤 3. 实例化 Monitoring Python 客户端
选择 1. 使用 IAM 验证用户或服务 ID
要在 Python 客户端使用 IBM Cloud IAM 身份验证,必须指定 Monitoring 端点、API 密钥和 IBM Cloud Monitoring 实例的 GUID。
通过终端完成以下步骤:
-
获取 IBM Cloud Monitoring 实例的 GUID。 运行以下命令:
ibmcloud resource service-instance <NAME> --output json | jq -r '.[].guid'
-
获取 API 密钥。 运行以下命令生成用户 API 密钥:
ibmcloud iam api-key-create KEY_NAME
-
获取监控实例所在区域的端点。
要查看可用端点列表,请参阅 Monitoring 端点。
例如,在 us-south 可用实例的端点如下:
https://us-south.monitoring.cloud.ibm.com
-
在 Python 脚本中添加以下条目:
from sdcclient import IbmAuthHelper, SdMonitorClient URL = <MONITORING_ENDPOINT> # For example: URL = 'https://us-south.monitoring.cloud.ibm.com' APIKEY = <IAM_APIKEY> GUID = <GUID> ibm_headers = IbmAuthHelper.get_headers(URL, APIKEY, GUID) sdclient = SdMonitorClient(sdc_url=URL, custom_headers=ibm_headers)
位置
<MONITORING_ENDPOINT>
必须替换为监控实例可用的端点。<IAM_APIKEY>
必须替换为有效的 IAM API 密钥。 了解更多。<GUID>
必须替换为在上一步中获得的监控实例的 GUID。
现在,您可以使用 sdclient 执行通过 IAM 验证的操作。
如果出现错误 400 Client Error: Bad Request for url: https://iam.cloud.ibm.com/identity/token
,请检查 API 密钥。 您传递的值无效。
方案 2. 使用监控 API 令牌进行身份验证
您必须指定 Monitoring 端点,以及与要用 Python 客户端管理的团队相关联的监控 API 令牌。
通过终端完成以下步骤:
-
获取监控实例所在区域的端点。
要查看可用端点列表,请参阅 Monitoring 端点。
例如,在 us-south 可用实例的端点如下:
https://us-south.monitoring.cloud.ibm.com
-
在 Python 脚本中添加以下条目:
from sdcclient import IbmAuthHelper, SdMonitorClient URL = <MONITORING_ENDPOINT> # For example: URL = 'https://us-south.monitoring.cloud.ibm.com' MONITOR_TOKEN = <MONITOR_TOKEN> # For example: MONITOR_TOKEN = 'xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx' sdclient = SdMonitorClient(token=MONITOR_TOKEN,sdc_url=URL)
位置
<MONITORING_ENDPOINT>
必须替换为监控实例可用的端点。<MONITOR_TOKEN>
必须替换为监控 API 令牌。
现在,您可以使用 sdclient 执行通过 IAM 验证的操作。
样本 1. Python 使用 IAM API 密钥的脚本
#!/usr/bin/env python3
import os
import sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), '..'))
from sdcclient import IbmAuthHelper, SdMonitorClient
# Parse arguments.
def usage():
print('usage: %s <ENDPOINT_URL> <API_KEY> <INSTANCE_GUID>' % sys.argv[0])
print('ENDPOINT_URL: IBM Cloud endpoint URL (e.g. https://us-south.monitoring.cloud.ibm.com')
print('API_KEY: IBM Cloud IAM API key. This key is used to retrieve an IAM access token.')
print('INSTANCE_GUID: GUID of an IBM Cloud Monitoring.')
sys.exit(1)
if len(sys.argv) != 4:
usage()
URL = sys.argv[1]
APIKEY = sys.argv[2]
GUID = sys.argv[3]
# Instantiate the client
ibm_headers = IbmAuthHelper.get_headers(URL, APIKEY, GUID)
sdclient = SdMonitorClient(sdc_url=URL, custom_headers=ibm_headers)
样本 2. Python 使用监控 API 令牌的脚本
#!/usr/bin/env python3
import os
import sys
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])), '..'))
from sdcclient import IbmAuthHelper, SdMonitorClient
# Parse arguments.
def usage():
print('usage: %s <ENDPOINT_URL> <MONITOR_TOKEN> <INSTANCE_GUID>' % sys.argv[0])
print('ENDPOINT_URL: IBM Cloud endpoint URL (e.g. https://us-south.monitoring.cloud.ibm.com')
print('MONITOR_TOKEN: token that is associated to a team.')
sys.exit(1)
if len(sys.argv) != 3:
usage()
URL = sys.argv[1]
MONITOR_TOKEN = sys.argv[2]
# Instantiate the client
sdclient = SdMonitorClient(token=MONITOR_TOKEN,sdc_url=URL)