A Python-based application to backup Grafana settings using the Grafana API
—
Specialized administrative utility functions for Grafana management including alert management, user role management, and permission restoration. These tools provide operational capabilities beyond basic backup and restore functionality.
The primary tools entry point that provides access to specialized administrative functions.
def main(precommand_args, settings):
"""
Main tools interface providing access to administrative utilities
Args:
precommand_args (dict): Arguments from main command line
settings (dict): Configuration settings loaded from grafanaSettings
Available commands: pause-alerts, unpause-alerts, make-users-viewers, restore-users
"""Temporarily disable all dashboard alerts in the Grafana instance for maintenance or troubleshooting.
def main(args, settings):
"""
Pause all dashboard alerts in Grafana instance
Module: grafana_backup.pause_alerts
Features: Bulk alert disabling, state preservation, maintenance mode
Safety: Preserves alert configurations while disabling notifications
Output: JSON file with paused alert details for later restoration
"""Restore previously paused alerts from a saved alert state file.
def main(args, settings):
"""
Unpause alerts from saved alert state file
Module: grafana_backup.unpause_alerts
Args:
args['<alerts_filename>']: Path to JSON file with paused alert details
Features: Selective alert restoration, state validation, error recovery
Safety: Only restores alerts that were previously paused by pause-alerts
"""Convert all non-admin users to viewer role for security lockdown scenarios.
def main(args, settings):
"""
Convert all users to viewer role except administrators
Module: grafana_backup.make_users_viewers
Features: Bulk role conversion, admin preservation, reversible operation
Safety: Preserves admin users, creates backup of original user roles
Requires: Basic authentication (admin credentials)
"""Restore user roles and permissions from a previously saved user state file.
def main(args, settings):
"""
Restore user permissions from saved user state file
Module: grafana_backup.restore_user_permissions
Args:
args['<users_filename>']: Path to JSON file with user permission details
Features: Role restoration, permission validation, selective restoration
Requires: Basic authentication (admin credentials)
"""from grafana_backup.tools import main as tools_main
from grafana_backup.grafanaSettings import main as load_config
# Load configuration
settings = load_config('/path/to/grafanaSettings.json')
# Pause all alerts before maintenance
pause_args = {
'tools': True,
'pause-alerts': True,
'--config': None
}
tools_main(pause_args, settings)
# ... perform maintenance operations ...
# Unpause alerts after maintenance
unpause_args = {
'tools': True,
'unpause-alerts': True,
'<alerts_filename>': 'paused_alerts_202501011200.json',
'--config': None
}
tools_main(unpause_args, settings)# Convert all users to viewers for security lockdown
viewer_args = {
'tools': True,
'make-users-viewers': True,
'--config': None
}
tools_main(viewer_args, settings)
# ... security incident response ...
# Restore original user permissions
restore_args = {
'tools': True,
'restore-users': True,
'<users_filename>': 'user_permissions_backup.json',
'--config': None
}
tools_main(restore_args, settings)# Pause all alerts
grafana-backup tools pause-alerts
# Unpause alerts from file
grafana-backup tools unpause-alerts paused_alerts_202501011200.json
# Convert users to viewers
grafana-backup tools make-users-viewers
# Restore user permissions
grafana-backup tools restore-users user_permissions_backup.json{
"timestamp": "2025-01-01T12:00:00Z",
"paused_alerts": [
{
"dashboard_id": 1,
"dashboard_title": "System Metrics",
"alert_id": 1,
"alert_name": "High CPU Usage",
"was_enabled": true
}
]
}{
"timestamp": "2025-01-01T12:00:00Z",
"user_permissions": [
{
"user_id": 2,
"login": "john.doe",
"email": "john.doe@example.com",
"original_role": "Editor",
"is_admin": false,
"org_id": 1
}
]
}Several tools require basic authentication (username/password) for admin operations:
{
"grafana": {
"admin_account": "admin",
"admin_password": "admin_password"
}
}Or via environment variables:
export GRAFANA_ADMIN_ACCOUNT="admin"
export GRAFANA_ADMIN_PASSWORD="admin_password"
# Or pre-encoded
export GRAFANA_BASIC_AUTH="YWRtaW46YWRtaW5fcGFzc3dvcmQ="All tools that modify system state create backup files:
All administrative operations are designed to be reversible:
Comprehensive error handling for administrative operations:
Always create a full backup before using administrative tools:
# Create full backup first
grafana-backup save
# Then use administrative tools
grafana-backup tools pause-alertsProperly manage state files created by administrative tools:
Test administrative operations in development environments:
Consider the impact of administrative tools on monitoring:
These administrative tools provide powerful capabilities for operational management while maintaining safety through state preservation and reversible operations.
Install with Tessl CLI
npx tessl i tessl/pypi-grafana-backup