Python 클라이언트를 사용하여 대시보드 관리
Python 클라이언트를 사용하여 대시보드를 프로그래밍 방식으로 관리할 수 있습니다.
Python 클라이언트를 사용하는 방법에 대해 알아보려면 Python 클라이언트 사용을 참조하십시오.
특정 팀의 리소스에 대해 작업하려면 모니터링(sysdig) 토큰을 사용해야 합니다.
다음 표에는 대시보드를 관리하는 데 사용할 수 있는 일부 Python 기능이 나열되어 있습니다.
| 조치 | 기능 |
|---|---|
| 대시보드 작성 | sdclient.create_dashboard(dashboard_name) |
| 파일에서 대시보드 작성 | sdclient.create_dashboard_from_file('dashboard_name', 'dashboard_name.json', scope_filter, shared=False, public=True) |
| 대시보드 복사 | sdclient.create_dashboard_from_dashboard(dashboard_name, existing_dashboard_name, scope_filter, shared=False, public=True) |
| 대시보드 다운로드 | sdclient.get_dashboards() |
| 대시보드 업데이트 | sdclient.update_dashboard(dashboard_name) |
| 대시보드 삭제 | sdclient.delete_dashboard(dashboard_name) |
| 대시보드 찾기 | sdclient.find_dashboard_by(dashboard_name) |
| 시계열 추가 | sdclient.add_dashboard_panel(dashboard_name, panel_name, panel_type, metrics, scope=scope) |
| 대시보드 패널 추가 | sdclient.add_dashboard_panel(dashboard_name, panel_name, panel_type, metrics, sort_direction=sort_direction, limit=limit, layout=layout) |
| 패널 제거 | sdclient.remove_dashboard_panel(dashboard_name, 'CPU Over Time') |
| 파일에 대시보드 저장 | sdclient.save_dashboard_to_file('dashboard_name', 'dashboard_name.json') |
팀당 대시보드 나열
Python을 사용하여 팀에서 사용할 수 있는 대시보드를 나열할 수 있습니다.
기본 팀에서 사용 가능한 대시보드 나열
다음 코드는 기본 팀에서 사용할 수 있는 대시보드가 나열된 Python 스크립트의 구조를 보여줍니다.
#!/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> <apikey> <instance-guid>' % sys.argv[0])
print('endpoint-url: The endpoint URL that should point to IBM Cloud')
print('apikey: IBM Cloud IAM apikey that will be used to retrieve an access token')
print('instance-guid: GUID of an IBM Cloud Monitoring with monitoring instance')
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)
# Show the list of dashboards
ok, res = sdclient.get_dashboards()
if not ok:
print(res)
sys.exit(1)
for db in res['dashboards']:
print("%s [Team ID: %s] Name: %s, # Charts: %d" % ( db['id'], db['teamId'], db['name'], len(db['widgets'] if 'widgets' in db else [])))
팀에서 사용 가능한 대시보드 나열
다음 코드는 특정 팀에서 사용할 수 있는 대시보드를 나열하기 위한 Python 스크립트의 구조를 보여줍니다.
#!/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 SdMonitorClient
# Parse arguments.
def usage():
print('usage: %s <endpoint-url> <sysdig_token>' % sys.argv[0])
print('endpoint-url: The endpoint URL that should point to IBM Cloud')
print('sysdig_token: Sysdig token for the team')
sys.exit(1)
if len(sys.argv) != 3:
usage()
URL = sys.argv[1]
# Set to the Sysdig token of the team
SYSDIG_TOKEN = sys.argv[2]
sdclient = SdMonitorClient(token=SYSDIG_TOKEN,sdc_url=URL)
# Show the list of dashboards
ok, res = sdclient.get_dashboards()
if not ok:
print(res)
sys.exit(1)
for db in res['dashboards']:
print("%s [Team ID: %s] Name: %s, # Charts: %d" % ( db['id'], db['teamId'], db['name'], len(db['widgets'] if 'widgets' in db else [])))
대시보드 작성
Python을 사용하여 대시보드를 작성할 수 있습니다.
기본 팀에서 대시보드 작성
다음 코드는 기본 팀에 적합한 새 대시보드를 작성하기 위한 Python 스크립트의 구조를 보여줍니다.
다음 코드는 Python 스크립트의 구조를 표시합니다.
#!/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> <apikey> <instance-guid>' % sys.argv[0])
print('endpoint-url: The endpoint URL that should point to IBM Cloud')
print('apikey: IBM Cloud IAM apikey that will be used to retrieve an access token')
print('instance-guid: GUID of an IBM Cloud Monitoring with monitoring instance')
sys.exit(1)
if len(sys.argv) != 4:
usage()
URL = sys.argv[1]
APIKEY = sys.argv[2]
GUID = sys.argv[3]
DASHBOARD_NAME = 'My New Dashboard from Python'
PANEL_NAME = 'CPU Over Time'
# Instantiate the client
ibm_headers = IbmAuthHelper.get_headers(URL, APIKEY, GUID)
sdclient = SdMonitorClient(sdc_url=URL, custom_headers=ibm_headers)
# Create an empty dashboard
ok, res = sdclient.create_dashboard(DASHBOARD_NAME)
# Check the result
dashboard_name = None
if ok:
print('Dashboard %d created successfully' % res['dashboard']['id'])
dashboard_name = res['dashboard']
else:
print(res)
sys.exit(1)
# Add a time series panel
panel_type = 'timeSeries'
metrics = [
{'id': 'proc.name'},
{'id': 'cpu.used.percent', 'aggregations': {'time': 'avg', 'group': 'avg'}}
]
ok, res = sdclient.add_dashboard_panel(
dashboard_name, PANEL_NAME, panel_type, metrics)
# Check the result
if ok:
print('Panel added successfully')
dashboard_name = res['dashboard']
else:
print(res)
sys.exit(1)
팀에서 대시보드 만들기
다음 코드는 특정 팀을 위한 대시보드를 만드는 Python 스크립트의 구조를 보여줍니다.
#!/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 SdMonitorClient
# Parse arguments.
def usage():
print('usage: %s <endpoint-url> <sysdig_token>' % sys.argv[0])
print('endpoint-url: The endpoint URL that should point to IBM Cloud')
print('sysdig_token: Sysdig token for the team')
sys.exit(1)
if len(sys.argv) != 3:
usage()
URL = sys.argv[1]
# Set to the Sysdig token of the team
SYSDIG_TOKEN = sys.argv[2]
DASHBOARD_NAME = 'My New Dashboard from Python'
PANEL_NAME = 'CPU Over Time'
sdclient = SdMonitorClient(token=SYSDIG_TOKEN,sdc_url=URL)
# Create an empty dashboard
ok, res = sdclient.create_dashboard(DASHBOARD_NAME)
# Check the result
dashboard_name = None
if ok:
print('Dashboard %d created successfully' % res['dashboard']['id'])
dashboard_name = res['dashboard']
else:
print(res)
sys.exit(1)
# Add a time series panel
panel_type = 'timeSeries'
metrics = [
{'id': 'proc.name'},
{'id': 'cpu.used.percent', 'aggregations': {'time': 'avg', 'group': 'avg'}}
]
ok, res = sdclient.add_dashboard_panel(
dashboard_name, PANEL_NAME, panel_type, metrics)
# Check the result
if ok:
print('Panel added successfully')
dashboard_name = res['dashboard']
else:
print(res)
sys.exit(1)
대시보드 복사
Python 사용하여 대시보드를 복사할 수 있습니다.
기본 팀에서 사용자 지정 대시보드 복사하기
다음 코드는 사용자 지정 대시보드를 기본 팀에 복사하는 Python 스크립트의 구조를 보여 줍니다.
#!/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> <apikey> <instance-guid>' % sys.argv[0])
print('endpoint-url: The endpoint URL that should point to IBM Cloud')
print('apikey: IBM Cloud IAM apikey that will be used to retrieve an access token')
print('instance-guid: GUID of an IBM Cloud Monitoring with monitoring instance')
sys.exit(1)
if len(sys.argv) != 4:
usage()
URL = sys.argv[1]
APIKEY = sys.argv[2]
GUID = sys.argv[3]
# Name for the dashboard to create
dashboard_name = "My new CPU dashboard"
# Existing dashboard to copy
existing_dashboard_name = "My Existing Dashboard"
# New filter to apply
scope_filter = 'host.hostName = "virtualserver02"'
# Instantiate the client
ibm_headers = IbmAuthHelper.get_headers(URL, APIKEY, GUID)
sdclient = SdMonitorClient(sdc_url=URL, custom_headers=ibm_headers)
# Copy a dashboard
ok, res = sdclient.create_dashboard_from_dashboard(dashboard_name, existing_dashboard_name, scope_filter, shared=False, public=True)
# Check the result
#
if ok:
print('Dashboard created successfully')
else:
print(res)
sys.exit(1)
기본 팀에서 미리 정의된 대시보드 복사하기
다음 코드는 미리 정의된 대시보드를 기본 팀에 복사하는 Python 스크립트의 구조를 보여 줍니다.
#!/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> <apikey> <instance-guid>' % sys.argv[0])
print('endpoint-url: The endpoint URL that should point to IBM Cloud')
print('apikey: IBM Cloud IAM apikey that will be used to retrieve an access token')
print('instance-guid: GUID of an IBM Cloud Monitoring with monitoring instance')
sys.exit(1)
if len(sys.argv) != 4:
usage()
URL = sys.argv[1]
APIKEY = sys.argv[2]
GUID = sys.argv[3]
# Name for the dashboard to create
dashboard_name = "My Overview by Process"
# Existing dashboard to copy
default_dashboard_name = "Overview by Process"
# New filter to apply
scope_filter = 'host.hostName = "virtualserver02"'
# Instantiate the client
ibm_headers = IbmAuthHelper.get_headers(URL, APIKEY, GUID)
sdclient = SdMonitorClient(sdc_url=URL, custom_headers=ibm_headers)
# Copy a dashboard
ok, res = sdclient.create_dashboard_from_view(dashboard_name, default_dashboard_name, scope_filter, shared=False, public=True)
# Check the result
#
if ok:
print('Dashboard created successfully')
else:
print(res)
sys.exit(1)
팀에서 대시보드 복사
다음 코드는 대시보드를 팀에 복사하는 Python 스크립트의 구조를 보여 줍니다.
#!/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 SdMonitorClient
# Parse arguments.
def usage():
print('usage: %s <endpoint-url> <sysdig_token>' % sys.argv[0])
print('endpoint-url: The endpoint URL that should point to IBM Cloud')
print('sysdig_token: Sysdig token for the team')
sys.exit(1)
if len(sys.argv) != 3:
usage()
URL = sys.argv[1]
# Set to the Sysdig token of the team
SYSDIG_TOKEN = sys.argv[2]
# Name for the dashboard to create
dashboard_name = "My new CPU dashboard"
# Existing dashboard to copy
existing_dashboard_name = "My Existing Dashboard"
# New filter to apply
scope_filter = 'host.hostName = "virtualserver02"'
sdclient = SdMonitorClient(token=SYSDIG_TOKEN,sdc_url=URL)
# Copy a dashboard
ok, res = sdclient.create_dashboard_from_dashboard(dashboard_name, existing_dashboard_name, scope_filter, shared=False, public=True)
# Check the result
#
if ok:
print('Dashboard created successfully')
else:
print(res)
sys.exit(1)
대시보드 삭제
당신이 사용할 수있는Python 대시보드를 삭제하려면
대시보드를 삭제하려면 대시보드의 ID를 알고 있어야 합니다.
기본 팀에서 대시보드 삭제
다음 코드는 기본 팀에서 대시보드를 삭제하는 Python 스크립트의 구조를 보여 줍니다.
#!/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> <apikey> <instance-guid>' % sys.argv[0])
print('endpoint-url: The endpoint URL that should point to IBM Cloud')
print('apikey: IBM Cloud IAM apikey that will be used to retrieve an access token')
print('instance-guid: GUID of an IBM Cloud Monitoring with monitoring instance')
sys.exit(1)
if len(sys.argv) != 4:
usage()
URL = sys.argv[1]
APIKEY = sys.argv[2]
GUID = sys.argv[3]
# Name of the dashboard that you want to delete
DASHBOARD_NAME = "Nginx production"
# Instantiate the client
ibm_headers = IbmAuthHelper.get_headers(URL, APIKEY, GUID)
sdclient = SdMonitorClient(sdc_url=URL, custom_headers=ibm_headers)
# Show the list of dashboards
ok, res = sdclient.get_dashboards()
# Loop through all fetched dashboards
for dashboard in res[1]['dashboards']:
# Delete dashboard if it matches the pattern (one or many)
if DASHBOARD_NAME in dashboard['name']:
print("Deleting " + dashboard['name'])
res = sdclient.delete_dashboard(dashboard)
팀에서 대시보드 삭제
다음 코드는 특정 팀에서 대시보드를 삭제하는 Python 스크립트의 구조를 보여 줍니다.
#!/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 SdMonitorClient
# Parse arguments.
def usage():
print('usage: %s <endpoint-url> <sysdig_token>' % sys.argv[0])
print('endpoint-url: The endpoint URL that should point to IBM Cloud')
print('sysdig_token: Sysdig token for the team')
sys.exit(1)
if len(sys.argv) != 3:
usage()
URL = sys.argv[1]
# Set to the Sysdig token of the team
SYSDIG_TOKEN = sys.argv[2]
sdclient = SdMonitorClient(token=SYSDIG_TOKEN,sdc_url=URL)
# Show the list of dashboards
ok, res = sdclient.get_dashboards()
# Loop through all fetched dashboards
for dashboard in res[1]['dashboards']:
# Delete dashboard if it matches the pattern (one or many)
if DASHBOARD_NAME in dashboard['name']:
print("Deleting " + dashboard['name'])
res = sdclient.delete_dashboard(dashboard)
맞춤형 대시보드 다운로드
Python 사용하여 사용자 지정 대시보드를 다운로드할 수 있습니다.
대시보드를 다운로드할 때 사용자 정의 대시보드만 다운로드합니다.
기본 팀에서 사용자 정의 대시보드 다운로드
다음 코드는 기본 팀에서 사용자 지정 대시보드를 다운로드하는 Python 스크립트의 구조를 보여 줍니다.
#!/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> <apikey> <instance-guid>' % sys.argv[0])
print('endpoint-url: The endpoint URL that should point to IBM Cloud')
print('apikey: IBM Cloud IAM apikey that will be used to retrieve an access token')
print('instance-guid: GUID of an IBM Cloud Monitoring with monitoring instance')
sys.exit(1)
if len(sys.argv) != 4:
usage()
def zipdir(path, ziph):
# ziph is zipfile handle
for root, dirs, files in os.walk(path):
for file in files:
ziph.write(os.path.join(root, file))
def cleanup_dir(path):
if os.path.exists(path) == False:
return
if os.path.isdir(path) == False:
print('Provided path is not a directory')
sys.exit(-1)
for file in os.listdir(path):
file_path = os.path.join(path, file)
try:
if os.path.isfile(file_path):
os.unlink(file_path)
else:
print('Cannot clean the provided directory due to delete failure on %s' % file_path)
except Exception as e:
print(e)
os.rmdir(path)
sysdig_dashboard_dir = 'sysdig-dashboard-dir'
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)
ok, res = sdclient.get_dashboards()
if not ok:
print(res)
sys.exit(1)
# Creating sysdig dashboard directory to store dashboards
if not os.path.exists(sysdig_dashboard_dir):
os.makedirs(sysdig_dashboard_dir)
for db in res['dashboards']:
sdclient.save_dashboard_to_file(db, os.path.join(sysdig_dashboard_dir, str(db['id'])))
print("Name: %s, # Charts: %d" % (db['name'], len(db['widgets'])))
팀에서 사용자 정의 대시보드 다운로드
다음 코드는Python 특정 팀에서 사용자 정의 대시보드를 다운로드하는 스크립트입니다.
#!/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 SdMonitorClient
# Parse arguments.
def usage():
print('usage: %s <endpoint-url> <sysdig_token>' % sys.argv[0])
print('endpoint-url: The endpoint URL that should point to IBM Cloud')
print('sysdig_token: Sysdig token for the team')
sys.exit(1)
if len(sys.argv) != 3:
usage()
URL = sys.argv[1]
# Set to the Sysdig token of the team
SYSDIG_TOKEN = sys.argv[2]
def zipdir(path, ziph):
# ziph is zipfile handle
for root, dirs, files in os.walk(path):
for file in files:
ziph.write(os.path.join(root, file))
def cleanup_dir(path):
if os.path.exists(path) == False:
return
if os.path.isdir(path) == False:
print('Provided path is not a directory')
sys.exit(-1)
for file in os.listdir(path):
file_path = os.path.join(path, file)
try:
if os.path.isfile(file_path):
os.unlink(file_path)
else:
print('Cannot clean the provided directory due to delete failure on %s' % file_path)
except Exception as e:
print(e)
os.rmdir(path)
sysdig_dashboard_dir = 'sysdig-dashboard-dir'
sdclient = SdMonitorClient(token=SYSDIG_TOKEN,sdc_url=URL)
ok, res = sdclient.get_dashboards()
if not ok:
print(res)
sys.exit(1)
# Creating sysdig dashboard directory to store dashboards
if not os.path.exists(sysdig_dashboard_dir):
os.makedirs(sysdig_dashboard_dir)
for db in res['dashboards']:
sdclient.save_dashboard_to_file(db, os.path.join(sysdig_dashboard_dir, str(db['id'])))
print("Name: %s, # Charts: %d" % (db['name'], len(db['widgets'])))