IBM Cloud Docs
Gestión de paneles de control utilizando el cliente Python

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:

Funciones Python del cuadro de mandos
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'])))