تلفیق هوش مصنوعی مولد و زبیکس

عکس بنر مقاله سدیدآفرین با موضوع تلفیق هوش مصنوعی مولد و زبیکس

مقدمه

بیش از یک دهه است که Zabbix به‌عنوان ستون فقرات زیرساخت‌های سازمانی و صنعتی در سراسر دنیا مورد استفاده قرار می‌گیرد. این ابزار از نسخه 3.2 تا 7.4 همراه بسیاری از متخصصان فناوری اطلاعات بوده و به‌عنوان یک راهکار قدرتمند و قابل‌اعتماد برای مانیتورینگ (Monitoring) شناخته شده است. اما با توجه به تحولاتی که در سال‌های اخیر در حوزه هوش مصنوعی (Artificial Intelligence) و دستیارهای هوشمند (Intelligent Assistants) رخ داده است، پرسشی اساسی مطرح می‌شود:
چرا نتوانیم با سیستم مانیتورینگ خود به همان سادگی و طبیعی گفت‌وگو کنیم که با یک دستیار شخصی مانند Maria – یک Generative AI Assistant – تعامل داریم؟
در این مقاله به بررسی تلفیق هوش مصنوعی مولد و زبیکس و تحولی که در سیستم مانیتورینگ سازمانی ایجاد نموده است می‌پردازیم.

MCP چیست؟

MCP (Model Context Protocol) یک پروتکل جهانی است که امکان می‌دهد سیستم‌های Generative AI به‌صورت ایمن، پایدار و در مقیاس وسیع با داده‌های جهانی ارتباط برقرار کنند.

تصور کنید نیمه‌شب یک هشدار بحرانی دریافت کرده‌اید. به‌جای جستجو در چندین Dashboard و بررسی دستی داده‌ها، کافیست بپرسید:
«چه اتفاقی برای Production Server افتاده است؟»

و بلافاصله پاسخی شفاف و کاربردی دریافت کنید، مثل:

«سرور web-prod-01 با مصرف بالای حافظه (۹۴٪) مواجه شده است. این مشکل همزمان با افزایش ترافیک در ۱۵ دقیقه گذشته شروع شده. پیشنهاد می‌کنم Database Connection Pool بررسی شود و سرویس Apache ری‌استارت گردد. مایلید لاگ‌های مرتبط را مشاهده کنید؟»

این دیگر یک رویا نیست، بلکه واقعیتی در دسترس است.

اصول طراحی

هدف از این پروژه، ارتقای قابلیت‌های Zabbix بدون ایجاد تغییر در هسته اصلی آن است. طراحی معماری مبتنی بر اصول زیر انجام شده است:

  • Zabbix دست‌نخورده: نصب اصلی بدون تغییر باقی می‌ماند.
  • API-first: تمامی ارتباطات از طریق JSON-RPC API انجام می‌شود.
  • پل هوشمند: یک سرویس واسطه زبان انسان را به Zabbix Metrics ترجمه می‌کند.
  • مقیاس‌پذیری: طراحی برای رشد همگام با زیرساخت آماده است.

معماری پیشنهادی

  • Zabbix Server: Debian 12، Zabbix 7.4.0، PostgreSQL 15.13
  • AI Server (MCP): Rocky Linux 9، Gemini AI، Express.js، Winston (Logging)، Gemini CLI، Redis، Nginx، PM2

وب هوک‌ها

ما هشدارهای زبیکس را از طریق وب‌هوک پردازش می‌کنیم که داده‌ها را به سرویس هوش مصنوعی مولد ما ارسال می‌کند.

#!/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 = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {mcp_token}'
}

# 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 = {
"timestamp": datetime.now().isoformat(),
"source": "zabbix",
"eventid": eventid,
"severity": severity,
"message": message,
"host": host,
"value": value,
"zabbix_server": zabbix_server_ip
}

try:
print(f"Sending alert to MCP: {mcp_endpoint}")
print(f"Payload: {json.dumps(payload, indent=2)}")

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

print(f"Alert sent successfully: HTTP {response.status_code}")
print(f"Response: {response.text}")
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: {e}", file=sys.stderr)
print(f"Response: {response.text}", file=sys.stderr)
return False
except Exception as e:
print(f"? Unexpected error: {e}", file=sys.stderr)
return False

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

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

نمونه‌های استفاده

  • سناریوی اول – مانیتورینگ روزانه: بررسی وضعیت کلی زیرساخت در آغاز روز کاری.
  • سناریوی دوم – برنامه‌ریزی پیشگیرانه: شناسایی روندهای نگران‌کننده مانند رشد سریع لاگ‌ها، افزایش دمای تجهیزات یا کند شدن دیتابیس.
  • گفت‌وگو با Dashboard: ایجاد داشبوردهای اختصاصی تنها با یک دستور در Gemini CLI.

پیاده‌سازی MCP

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

پیکربندی (.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

وب‌هوک در زبیکس

1. Alerts → Media Types → Create
2. Script name: mcp_webhook.py
3. Parameters: {EVENT.ID} {EVENT.NSEVERITY} {ALERT.MESSAGE} {HOST.NAME} {ITEM.VALUE}

پیاده‌سازی و آزمایش سناریو

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

#Test curl 
curl -H "Authorization: Bearer TU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"prompt":"¿How many host fo I have?"}' \
http://localhost:3001/ask-zabbix

خطاهای متداول و منابع شروع

  • امنیت از روز اول باید جدی گرفته شود (Tokens، Firewall، Rate Limiting).
  • مستندسازی الزامی است؛ کد کافی نیست.

منابع آماده شامل:

  • اسکریپت‌های نصب برای Rocky Linux و Debian
  • پیکربندی Media Types و Actions در Zabbix
  • مرجع API به همراه نمونه‌ها

آینده

چشم‌انداز نهایی، توسعه یک اپلیکیشن با دستیار هوش مصنوعی به نام Maria است که بتواند نه‌تنها پیشنهاد دهد، بلکه اقدامات پیشگیرانه را نیز اجرا کند. این دستیار از طریق Gemini CLI و یک کانال ارتباطی امن با Zabbix Server و MCP هماهنگ خواهد شد.

نتیجه‌گیری

Zabbix همچنان موتور قدرتمند و قابل‌اعتماد دنیای مانیتورینگ باقی خواهد ماند، اما اکنون با تلفیق هوش مصنوعی مولد و زبیکس به ابزاری شهودی‌تر، هوشمندتر و مکالمه‌ای‌تر تبدیل شده است. هدف جایگزینی تجربه انسانی نیست، بلکه توانمندسازی آن است؛ تا تصمیم‌گیری‌ها سریع‌تر، دقیق‌تر و کارآمدتر انجام شوند.

سدیدآفرین پیش‌رو در صنعت هوش مصنوعی

شرکت سدیدآفرین به‌عنوان اولین نمایندگی رسمی Zabbix در خاورمیانه، مدت‌هاست بر روی پروژه‌های مرتبط با هوش مصنوعی و ادغام آن با Zabbix فعالیت می‌کند. این شرکت اکنون آماده است خدمات نوین مبتنی بر هوش مصنوعی در مانیتورینگ سازمانی را به شرکت‌ها و سازمان‌های خصوصی و دولتی ارائه دهد و گامی مهم در مسیر تحول دیجیتال و هوشمندسازی زیرساخت‌ها بردارد.