/claim #3960
Closes #3960
Proposed Changes
Adds a new Nagios XI provider for monitoring integration. This provider enables Keep to pull alerts from Nagios XI and receive webhook notifications.
Features
- Pull alerts: Queries the Nagios XI REST API for service problems (WARNING/CRITICAL/UNKNOWN) and host problems (DOWN/UNREACHABLE)
- Push alerts (webhook): Accepts webhook payloads from Nagios notification commands, supporting both host and service alert formats
- Acknowledge problems: Supports acknowledging host and service problems via the Nagios XI command API
- Severity mapping: Maps Nagios states (OK/WARNING/CRITICAL/UNKNOWN for services; UP/DOWN/UNREACHABLE for hosts) to Keep severity levels
- Status mapping: Handles acknowledged, firing, and resolved states
- SSL verification toggle: Supports self-signed certificates
Files Added
keep/providers/nagios_provider/nagios_provider.py — Main provider implementation
keep/providers/nagios_provider/alerts_mock.py — Mock alert data for testing
keep/providers/nagios_provider/README.md — Documentation with setup instructions
keep/providers/nagios_provider/__init__.py
Architecture
The provider follows the established Keep provider pattern:
- Extends
BaseProvider with NagiosProviderAuthConfig for authentication
- Implements
_get_alerts() for pull-based alert ingestion
- Implements
_format_alert() static method for webhook-based push ingestion
- Implements
validate_scopes() for API connectivity verification
- Uses
ProviderScope and ProviderMethod for capability declaration
Provider Category
- Category: Monitoring
- Tags: alert
Proof
The provider follows the exact same pattern as existing monitoring providers (Zabbix, Checkmk). Key design decisions:
- Uses Nagios XI REST API v1 (
/api/v1/objects/servicestatus, /api/v1/objects/hoststatus)
- API key authentication via query parameter (standard Nagios XI pattern)
- Acknowledges problems via
/api/v1/system/command endpoint
- Webhook format is flexible, accepting both Nagios macro variables and custom JSON payloads
Checklist
- PR created against main branch
- Follows existing provider patterns (Zabbix, Checkmk)
- Documentation added (README.md)
- Mock alerts provided for testing