Článek přečtěte do 4 min.

Co je Model Context Protocol?

Model Context Protocol je univerzální protokol, který pomáhá generativním systémům umělé inteligence bezpečně, spolehlivě a ve velkém měřítku interagovat s globálními daty.
Představte si to: Jsou 3 hodiny ráno a na telefonu se vám zobrazí kritické upozornění. Místo otevírání více dashboardů a ruční korelace dat jednoduše napíšete: „Co se děje s produkčním serverem?"

Dostanete odpověď podobnou této:

„Server web-prod-01 má vysoké využití paměti (94%). Toto se začalo před 15 minutami, což se shodovalo s prudkým nárůstem provozu. Doporučuji zkontrolovat fond připojení k databázi a zvážit restart služby Apache. Chcete, abych vám zobrazil související protokoly?"

Tohle už není sci-fi!

Princip návrhu

Hlavním cílem je vylepšit Zabbix bez změny jeho jádra.

Řešení je založeno na architektuře, která dodržuje následující principy:

  • Zabbix beze změny: Původní instalace zůstává nezměněna.
  • API na prvním místě: Veškerá komunikace probíhá prostřednictvím robustního JSON-RPC API od Zabbixu.
  • Inteligentní most: Je vytvořena zprostředkovatelská služba pro překlad mezi lidským jazykem a metrikami Zabbixu.
  • Škálovatelnost: Návrh je připraven růst spolu s infrastrukturou.

Navrhovaná architektura:

  • Zabbix server: Debian 12, Zabbix 7.4.0, PostgreSQL 15.13.
  • Server umělé inteligence (Model Context Protocol): Rocky Linux 9, Gemini AI, Express.js, Winston (logování), Gemini CLI, Redis, Nginx, PM2.

Webhooky

Upozornění Zabbix zpracováváme prostřednictvím webhooku, který odesílá data do naší generativní služby umělé inteligence.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import requests
import sys
from datetime import datetime

def send_to_mcp(args):
""" Sends alerts to MCP server"""
# SETTINGS - EDIT ACCORDING TO YOUR ENVIRONMENT
mcp_endpoint = "http://TU_IP_MCP_SERVER:3001/alerts" # Change to the MCP server IP
mcp_token = "TU_MCP_AUTH_TOKEN" # Exchange for your MCP authentication token
zabbix_server_ip = "TU_IP_ZABBIX_SERVER" # Change to the Zabbix server IP

headers = 

# Extracting arguments from the Zabbix webhook
eventid = args[0] if len(args) > 0 else "unknown"
severity = args[1] if len(args) > 1 else "0"
message = args[2] if len(args) > 2 else "No message"
host = args[3] if len(args) > 3 else "unknown"
value = args[4] if len(args) > 4 else ""

payload = 

try:
print(f"Sending alert to MCP: ")
print(f"Payload: ")

response = requests.post(mcp_endpoint, json=payload, headers=headers, timeout=15)
response.raise_for_status()

print(f"Alert sent successfully: HTTP ")
print(f"Response: ")
return True

except requests.exceptions.Timeout:
print("? Error: Timeout connecting to MCP server", file=sys.stderr)
return False
except requests.exceptions.ConnectionError:
print("? Error: Cannot connect to MCP server", file=sys.stderr)
return False
except requests.exceptions.HTTPError as e:
print(f"? HTTP Error: ", file=sys.stderr)
print(f"Response: ", file=sys.stderr)
return False
except Exception as e:
print(f"? Unexpected error: ", file=sys.stderr)
return False

if __name__ == "__main__":
# The arguments come from Zabbix
args = sys.argv[1:]
print(f"Script called with args: ")

success = send_to_mcp(args)
sys.exit(0 if success else 1)

Případy použití

Scénář 1: Pondělní ráno

Cesar: Dobré ráno, jak vypadá infrastruktura?

Rozhraní příkazového řádku Gemini: Dobré ráno! Všechno je klidné. 14 aktivních hostitelů, 0 kritických problémů. O víkendu proběhl plánovaný restart serveru ‚proxmox-desarrollo', který byl úspěšně dokončen. Průměrné využití CPU je 23%. Potřebujete podrobnosti o nějakém konkrétním systému?

Scénář 2: Proaktivní plánování

Cesar: Jaké znepokojivé trendy pozorujete tento týden?

Gemini CLI: Všiml jsem si tří vzorců, které vyžadují pozornost:

1. storage-01: Růst o 2 GB/den v souboru /var/log.

  • Projekce: 90% kapacity za 12 dní.
  • Doporučení: Nakonfigurujte agresivnější rotaci protokolů.

2. mikrotik: Postupně se zvyšující teplota (+3°C za posledních 7 dní).

  • Doporučení: Zkontrolujte větrání.

3. base-datos-01: Počet pomalých dotazů se zvýšil o 15%.

  • Doporučení: Zkontrolujte indexy a optimalizujte časté dotazy.

Implementace Model Context Protocol

Server (Rocky Linux 9)
bash
#create the project
mkdir /opt/mcp-zabbix
cd /opt/mcp-zabbix

#Install dependencies
sudo dnf install -y nodejs npm redis nginx
sudo npm install -g pm2

#Set up the project
npm init -y
npm install express axios @google/generative-ai winston helmet cors dotenv

Konfigurace (.env)

bash
#Environment variables
ZABBIX_URL=http://tu-zabbix-server/zabbix/api_jsonrpc.php
ZABBIX_API_TOKEN=tu_token_de_zabbix_aqui
GEMINI_API_KEY=tu_api_key_de_gemini
MCP_AUTH_TOKEN=genera_un_token_seguro
PORT=3001

Webhook v Zabbixu

1. Upozornění → Typy médií → Vytvořit
2. Název skriptu: mcp_webhook.py
3. Parametry:

Otestujte to

#Start the MCP server
pm2 start ecosystem.config.js

#Test curl 
curl -H "Authorization: Bearer TU_TOKEN" \
-H "Content-Type: application/json" \
-d '' \
http://localhost:3001/ask-zabbix

Budoucnost

Konverzace na řídicím panelu

Cesar: Ukaž mi řídicí panel kritických serverů.

Gemini CLI: Vytvoření vlastního dashboardu pomocí:

  • CPU/paměť vašich 3 produkčních serverů.
  • Latence sítě webových služeb.
  • Místo na disku databáze.
  • Stav nočního zálohování.

Vygenerovaný dashboard: http://zabbix.local/dashboard/generated-123

Chyby, kterým se vyhnout

  • Neignorujte zabezpečení: Tokeny, firewall, omezení rychlosti od prvního dne
  • Nezapomeňte na dokumentaci: Kód se vysvětlí sám, pracovní postupy ne.

Zdroje pro začátek

  • Kompletní instalace: Skripty pro Rocky Linux a Debian.
  • Konfigurace Zabbixu: Typy médií a akce.
  • Referenční informace k API: Koncové body a příklady.

Případy použití

Základní monitorování: Hostitelé, položky, triggery

  • Inteligentní upozornění: Automatická analýza.
  • Dotazy ad-hoc: Rychlé prošetření.
  • Automatizované reporty: Pravidelné souhrny.

Budoucí integrace

Cílem je vyvinout aplikaci, která umožňuje přirozenou interakci s asistentkou s umělou inteligencí jménemMaria". Myšlenka spočívá v tom, že Maria na základě toho, co se děje, navrhuje akce a proaktivně je provádí.

Aby toho bylo dosaženo, asistent se integruje s rozhraním příkazového řádku (CLI) Gemini a vytvoří další zabezpečený komunikační kanál. Doporučená architektura bude sestávat z několika serverů schopných vzájemné komunikace, včetně serveru Zabbix, protokolu Model Context Protocol a osobního asistenta. Vývoj základní integrace můžete sledovat v tomto repozitáři.

Závěrem

Zabbix bude i nadále spolehlivým nástrojem, který všichni známe. Rozdíl je v tom, že se nyní stává intuitivnějším a konverzačním. Cílem není nahradit lidskou zkušenost, ale posílit ji. Umělá inteligence nám umožní vytvářet řešení, která byla dříve nemyslitelná.

Abychom tento potenciál plně využili, je nezbytné, abychom se my, jako odborníci, neustále vzdělávali a prohlubovali své znalosti o tomto nástroji. Tímto způsobem se nebudeme spoléhat pouze na to, co nám umělá inteligence navrhne, ale budeme schopni její akce ověřit a autorizovat vlastním úsudkem. Pro více informací nás neváhejte kontaktovat.

Zdroj: Zabbix