# Zabbix Agent Management Tool A comprehensive Python script for managing Zabbix agent configurations, including backup, restore, and upgrade operations. ## Features - **Backup**: Create timestamped backups of all Zabbix agent configuration files - **Restore**: Restore configuration files from previous backups - **Upgrade**: Upgrade Zabbix agent while preserving custom configurations - **List Backups**: View all available backups with timestamps and details ## Requirements - Python 3.6+ - Root/sudo privileges for system operations - Zabbix agent installed on the system ## Quick Start ```bash # Make the script executable chmod +x agent_tool_linux.py # See all available options ./agent_tool_linux.py --help # Most common use case - upgrade agent safely ./agent_tool_linux.py upgrade ``` ## Usage ### Basic Commands ```bash # Create a backup of current configurations ./agent_tool_linux.py backup # List all available backups ./agent_tool_linux.py list-backups # Restore from a specific backup ./agent_tool_linux.py restore --backup-path /path/to/backup/directory # Upgrade agent while preserving custom settings ./agent_tool_linux.py upgrade # Enable verbose logging ./agent_tool_linux.py backup --verbose ``` ### Examples 1. **Create a backup before making changes:** ```bash ./agent_tool_linux.py backup ``` 2. **Upgrade the agent (recommended workflow):** ```bash # The upgrade command automatically creates a backup first ./agent_tool_linux.py upgrade ``` 3. **Restore from the most recent backup:** ```bash # First, list available backups ./agent_tool_linux.py list-backups # Then restore from a specific backup ./agent_tool_linux.py restore --backup-path ./backups/backup_20250925_143022 ``` ## How It Works ### Backup Process - Automatically detects all Zabbix agent configuration files in `/etc/zabbix/` - Supports both `zabbix_agentd.conf` and `zabbix_agent2.conf` files - Creates timestamped backup directories - Generates a backup manifest with metadata ### Restore Process - Restores configuration files from backup directories - Creates safety backups of current files before restoration - Automatically restarts the Zabbix agent service ### Upgrade Process 1. **Backup**: Creates a backup of current configurations 2. **Parse**: Extracts all uncommented (custom) settings from current configs 3. **Upgrade**: Updates the Zabbix agent package using the appropriate package manager 4. **Merge**: Integrates custom settings into new configuration files 5. **Diff**: Saves differences showing what was added to new configs 6. **Restart**: Restarts the Zabbix agent service ### Distribution Support - **Debian-based**: Ubuntu, Debian (uses `apt`) - **RHEL-based**: CentOS, RHEL, Fedora (uses `yum`/`dnf`) ## File Structure ``` zbx-agent-backup/ ├── agent_tool_linux.py # Main script ├── zabbix_agentd.conf # Default/template configuration ├── backups/ # Backup storage directory │ ├── backup_20250925_143022/ # Timestamped backup │ │ ├── zabbix_agentd.conf # Backed up config │ │ ├── backup_manifest.txt # Backup metadata │ │ └── *.diff # Configuration differences (after upgrade) └── agent_tool.log # Script execution log ``` ## Configuration Files Handled The script automatically detects and handles: - `/etc/zabbix/zabbix_agentd.conf` - `/etc/zabbix/zabbix_agent2.conf` - `/etc/zabbix/zabbix_agentd*.conf` (any variant) - `/etc/zabbix/zabbix_agent*.conf` (any variant) ## Logging - All operations are logged to `agent_tool.log` - Console output shows important status messages - Use `--verbose` flag for detailed debug information - Log rotation is handled automatically ## Safety Features - **Pre-restoration backup**: Current configs are backed up before restoration - **Manifest files**: Each backup includes metadata and file listings - **Diff files**: Upgrade process saves differences showing what was changed - **Service management**: Automatically handles service restart and enabling - **Error handling**: Comprehensive error checking and logging ## Troubleshooting ### Common Issues 1. **Permission denied**: Make sure to run with sudo for system operations 2. **No config files found**: Verify Zabbix agent is installed and configs exist 3. **Service restart failed**: Check if Zabbix agent service is properly installed 4. **Package upgrade failed**: Verify package repositories are configured ### Debug Mode ```bash ./agent_tool_linux.py backup --verbose ``` ### Manual Service Restart If automatic service restart fails: ```bash sudo systemctl restart zabbix-agent2 # or sudo systemctl restart zabbix-agent ``` ## Security Considerations - Script requires sudo privileges for package management and service control - Configuration files may contain sensitive information - Backup files are stored locally and should be protected appropriately - Log files may contain system information ## License This script is provided as-is for system administration purposes.