Gestión de paneles de control utilizando el cliente Python
Utilice el cliente Python para gestionar los paneles de control mediante programación.
Para aprender a utilizar el cliente Python, consulte Utilización del cliente Python.
Para trabajar con recursos en un equipo específico, debe utilizar la señal de Monitoring (sysdig).
En la tabla siguiente se listan algunas de las funciones de Python que puede utilizar para gestionar los paneles de control:
| Acción | Función |
|---|---|
| Crear un panel de control | sdclient.create_dashboard(dashboard_name) |
| Crear un panel de control a partir de un archivo | sdclient.create_dashboard_from_file('dashboard_name', 'dashboard_name.json', scope_filter, shared=False, public=True) |
| Copiar un panel de control | sdclient.create_dashboard_from_dashboard(dashboard_name, existing_dashboard_name, scope_filter, shared=False, public=True) |
| Descargar un panel de control | sdclient.get_dashboards() |
| Actualizar un panel de control | sdclient.update_dashboard(dashboard_name) |
| Suprimir un panel de control | sdclient.delete_dashboard(dashboard_name) |
| Buscar un panel de control | sdclient.find_dashboard_by(dashboard_name) |
| Añadir una serie de tiempo | sdclient.add_dashboard_panel(dashboard_name, panel_name, panel_type, metrics, scope=scope) |
| Panel Añadir panel de control | sdclient.add_dashboard_panel(dashboard_name, panel_name, panel_type, metrics, sort_direction=sort_direction, limit=limit, layout=layout) |
| Eliminar un panel | sdclient.remove_dashboard_panel(dashboard_name, 'CPU Over Time') |
| Guardar un panel de control en un archivo | sdclient.save_dashboard_to_file('dashboard_name', 'dashboard_name.json') |
Listar paneles de control por equipo
Puede utilizar Python para listar los paneles de instrumentos control disponibles para los equipos.
Listar los paneles de control que hay disponibles en el equipo predeterminado
El siguiente código muestra la estructura de un script Python para listar los paneles de control disponibles en el equipo predeterminado.
#!/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 [])))
Listar los paneles de control que hay disponibles en un equipo
El siguiente código muestra la estructura de un script Python para listar los paneles de control disponibles para un equipo específico.
#!/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 [])))
Crear un panel de control
Puede utilizar Python para crear paneles de control.
Crear un panel de control en el equipo predeterminado
El siguiente código muestra la estructura de un script Python para crear un nuevo panel de control para el equipo predeterminado.
El código siguiente muestra la estructura de un 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)
Crear un panel de control en un equipo
El siguiente código muestra la estructura de un script Python para crear un cuadro de mando para un equipo específico.
#!/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)
Copiar un panel de control
Puede utilizar Python para copiar cuadros de mando.
Copiar un cuadro de mandos personalizado en el equipo por defecto
El siguiente código muestra la estructura de un script Python para copiar un cuadro de mandos personalizado al equipo por defecto.
#!/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)
Copiar un cuadro de mandos predefinido en el equipo por defecto
El siguiente código muestra la estructura de un script Python para copiar un cuadro de mando predefinido al equipo por defecto.
#!/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)
Copiar un panel de control en un equipo
El siguiente código muestra la estructura de un script Python para copiar un cuadro de mando a un equipo.
#!/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)
Suprimir un panel de control
Puede utilizar Python para suprimir un panel de control.
Debe conocer el ID de un panel de control para suprimirlo.
Suprimir un panel de control del equipo predeterminado
El siguiente código muestra la estructura de un script Python para eliminar un cuadro de mando del equipo por defecto.
#!/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)
Eliminar un cuadro de mando de un equipo
El siguiente código muestra la estructura de un script Python para eliminar un cuadro de mando de un equipo específico.
#!/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)
Descargar paneles de control personalizados
Puede utilizar Python para descargar cuadros de mando personalizados.
Cuando descarga los paneles de control, solo se descargan los paneles de control personalizados.
Descargar paneles de control personalizados en el equipo predeterminado
El siguiente código muestra la estructura de un script Python para descargar un cuadro de mandos personalizado del equipo por defecto.
#!/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'])))
Descargar paneles de control personalizados en un equipo
El código siguiente muestra la estructura de un script Python para descargar un panel de control personalizado de un equipo específico.
#!/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'])))