Не кладите power в media script
Zabbix media script должен отправлять сигнал. Ему не нужны SSH-ключи, cloud admin token или production sudo. Секрет для отправки и credential для действий должны быть разделены: sender DSN в Zabbix, agent token на контролируемой машине.
Payload media script
#!/usr/bin/env sh
set -eu
export NERVE_DSN="nerve://TOKEN:[email protected]"
printf '%s\nhost=%s\nseverity=%s\nevent=%s\n' \
"$1" "$2" "$3" "$4" | nerve send --severity alert
Какие действия открывать первыми
- Read-only diagnostics: service status, disk usage, recent logs.
- Restart одного известного stateless service.
- Cache cleanup только для documented safe paths.
- Rollback wrapper для одного сервиса и одного environment.
Severity mapping
Severity в Zabbix должна влиять на срочность уведомления, а не автоматически давать больше прав.
case "$TRIGGER_SEVERITY" in
Disaster|High) SEVERITY="critical" ;;
Average) SEVERITY="alert" ;;
*) SEVERITY="standard" ;;
esac
Event tags как подсказки
Используйте Zabbix tags для контекста, а не для выдачи новых прав. Tags вроде service=api, env=prod и runbook=restart-api помогают выбрать правильный текст и ссылку, но final allowlist все равно должен проверять agent.
Что лучше оставить ручным
Database failover, удаление файлов вне cache path, изменение firewall rules и restart целого cluster не стоит превращать в one-tap action, пока процедура не проверена и не отрепетирована.
Проверка без аварии
Создайте test trigger или maintenance host, который отправляет такой же payload, но указывает env=staging. Это позволяет проверить шаблон, severity mapping и recovery signal до настоящего incident.
Recovery messages
Для High и Disaster triggers включайте recovery signals. Человек, которого разбудил alert, должен увидеть, что состояние вернулось в норму, а не держать в голове устаревшую картину.