A client library for accessing the Grafana HTTP API, written in Python
—
Plugin lifecycle management for Grafana instances. This includes installing and uninstalling plugins from the Grafana plugin store, listing installed plugins, health checks, and metrics collection.
List all installed plugins on the Grafana instance, with options to filter and retrieve detailed plugin information.
def list(self):
"""
Return list of all installed plugins.
Returns:
list: List of plugin objects with metadata
"""
def by_id(self, plugin_id: str):
"""
Return single plugin item selected by plugin identifier.
Parameters:
plugin_id (str): The plugin identifier
Returns:
dict: Plugin object with metadata
Raises:
KeyError: If plugin with specified ID is not found
"""Install and uninstall plugins from the Grafana plugin store with error handling options.
def install(self, plugin_id: str, version: Optional[str] = None, errors: str = "raise"):
"""
Install a 3rd-party plugin from the plugin store.
Parameters:
plugin_id (str): The plugin identifier to install
version (str, optional): Specific version to install. Defaults to latest
errors (str): Error handling mode - "raise" or "ignore"
Returns:
dict or None: Installation result or None if ignored
Raises:
GrafanaClientError: If installation fails and errors="raise"
ValueError: If errors parameter is invalid
"""
def uninstall(self, plugin_id: str, errors: str = "raise"):
"""
Uninstall a 3rd-party plugin from the Grafana instance.
Parameters:
plugin_id (str): The plugin identifier to uninstall
errors (str): Error handling mode - "raise" or "ignore"
Returns:
dict or None: Uninstallation result or None if ignored
Raises:
GrafanaClientError: If uninstallation fails and errors="raise"
ValueError: If errors parameter is invalid
"""Monitor plugin health and collect metrics for operational insights.
def health(self, plugin_id: str):
"""
Run a health check probe on the designated plugin.
Parameters:
plugin_id (str): The plugin identifier to check
Returns:
dict: Health check results
"""
def metrics(self, plugin_id: str):
"""
Inquire metrics of the designated plugin.
Parameters:
plugin_id (str): The plugin identifier to get metrics for
Returns:
dict: Plugin metrics data
"""from grafana_client import GrafanaApi, TokenAuth
# Create API client
auth = TokenAuth(token="your-grafana-api-token")
api = GrafanaApi(auth=auth, host="your-grafana-host")
# List all installed plugins
plugins = api.plugin.list()
for plugin in plugins:
print(f"Plugin: {plugin['id']} - {plugin['name']} v{plugin['info']['version']}")
# Get specific plugin details
try:
plugin_info = api.plugin.by_id("grafana-clock-panel")
print(f"Found plugin: {plugin_info['name']}")
except KeyError:
print("Plugin not found")
# Install a plugin
try:
result = api.plugin.install("grafana-clock-panel")
print(f"Plugin installed: {result}")
except Exception as e:
print(f"Installation failed: {e}")
# Check plugin health
health_status = api.plugin.health("grafana-clock-panel")
print(f"Plugin health: {health_status}")
# Get plugin metrics
metrics = api.plugin.metrics("grafana-clock-panel")
print(f"Plugin metrics: {metrics}")
# Uninstall a plugin
api.plugin.uninstall("grafana-clock-panel")
print("Plugin uninstalled")# Install plugin with error ignoring
result = api.plugin.install("some-plugin", errors="ignore")
if result is None:
print("Installation was skipped or failed silently")
# Install specific version
api.plugin.install("grafana-clock-panel", version="1.3.0")Install with Tessl CLI
npx tessl i tessl/pypi-grafana-client@5.0.1