Gestione dei dashboard utilizzando il client Python
Utilizza il client Python per gestire i dashboard in modo programmatico.
Per informazioni su come utilizzare il client Python, vedi Utilizzo del client Python.
Per gestire le risorse in un team specifico, devi utilizzare il token di monitoraggio (sysdig).
La seguente tabella elenca alcune delle funzioni Python che è possibile utilizzare per gestire i dashboard:
| Azione | Funzione |
|---|---|
| Crea un dashboard | sdclient.create_dashboard(dashboard_name) |
| Creare un dashboard da un file | sdclient.create_dashboard_from_file('dashboard_name', 'dashboard_name.json', scope_filter, shared=False, public=True) |
| Copia un Dashboard | sdclient.create_dashboard_from_dashboard(dashboard_name, existing_dashboard_name, scope_filter, shared=False, public=True) |
| Scarica un dashboard | sdclient.get_dashboards() |
| Aggiorna un dashboard | sdclient.update_dashboard(dashboard_name) |
| Elimina un Dashboard | sdclient.delete_dashboard(dashboard_name) |
| Trova un dashboard | sdclient.find_dashboard_by(dashboard_name) |
| Aggiungere una serie temporale | sdclient.add_dashboard_panel(dashboard_name, panel_name, panel_type, metrics, scope=scope) |
| Pannello Aggiungi dashboard | sdclient.add_dashboard_panel(dashboard_name, panel_name, panel_type, metrics, sort_direction=sort_direction, limit=limit, layout=layout) |
| Rimuovi un pannello | sdclient.remove_dashboard_panel(dashboard_name, 'CPU Over Time') |
| Salvare un dashboard in un file | sdclient.save_dashboard_to_file('dashboard_name', 'dashboard_name.json') |
Elenca dashboard per team
Puoi utilizzare Python per elencare i dashboard disponibili per i team.
Elenca i dashboard disponibili nel team predefinito
Il seguente codice mostra la struttura di uno script Python per elencare i dashboard disponibili nel team di default.
#!/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 [])))
Elenco dei cruscotti disponibili in un team
Il seguente codice riporta la struttura di uno script Python per elencare i dashboard disponibili per uno specifico team.
#!/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 [])))
Crea un dashboard
Puoi utilizzare Python per creare i dashboard.
Crea un dashboard nel team predefinito
Il seguente codice mostra la struttura di uno script Python per creare un nuovo pannello di controllo per il team predefinito.
Il seguente codice mostra la struttura di uno script 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)
Crea un dashboard in un team
Il seguente codice mostra la struttura di uno script Python per la creazione di un dashboard per un team specifico.
#!/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)
Copia un Dashboard
Puoi utilizzare Python per copiare i dashboard.
Copiare un pannello di controllo personalizzato nel team predefinito
Il seguente codice mostra la struttura di uno script Python per copiare un pannello di controllo personalizzato nel team predefinito.
#!/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)
Copia un dashboard predefinito nel team predefinito
Il seguente codice mostra la struttura di uno script Python per copiare un dashboard predefinito nel team predefinito.
#!/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)
Copiare un dashboard in un team
Il codice seguente mostra la struttura di uno script Python per copiare un dashboard in un team.
#!/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)
Elimina un Dashboard
Puoi utilizzare Python per eliminare un dashboard.
È necessario conoscere l'ID di un dashboard per eliminarlo.
Elimina un dashboard dal team predefinito
Il seguente codice mostra la struttura di uno script Python per eliminare un pannello di controllo dal team predefinito.
#!/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)
Elimina un dashboard da un team
Il seguente codice mostra la struttura di uno script Python per eliminare un pannello di controllo da uno specifico team.
#!/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)
Scarica dashboard personalizzati
È possibile utilizzare Python per scaricare dashboard personalizzati.
Quando si scaricano i dashboard, si scaricano solo i dashboard personalizzati.
Scarica dashboard personalizzati nel team predefinito
Il seguente codice mostra la struttura di uno script Python per scaricare un pannello di controllo personalizzato dal team predefinito.
#!/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'])))
Scarica pannelli di controllo personalizzati in un team
Il seguente codice mostra la struttura di uno script Python per scaricare un pannello di controllo personalizzato da un team specifico.
#!/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'])))