تحلیل پیشرفته هشدارها با ادغام‌سازی DeepSeek و Zabbix

بنر اصلی مقاله سدیدآفرین با موضوع دغام‌سازی DeepSeek و Zabbix

مقدمه

با رشد روزافزون پیچیدگی زیرساخت‌های IT، تجزیه و تحلیل مؤثر داده‌های مانیتورینگ و تسریع پاسخ به رخدادها به یکی از چالش‌های اساسی تیم‌های عملیات تبدیل شده است. در این مقاله به بررسی برخی کاربردهای نوآورانه DeepSeek در صورت ادغام‌سازی DeepSeek و Zabbix می‌پردازیم.

عکس اول که صفحه زبیکس مربوط به این ادغام سازی را نشان می دهد.

پیش‌نیازها:

  • Zabbix Server نسخه 7.0 یا بالاتر
  • DeepSeek API (یا سایر APIهای هوش مصنوعی مشابه در صورت نیاز)

سناریو اول: تحلیل هوشمند هشدارها تنها با یک کلیک

با ادغام DeepSeek Analytics در رابط کاربری Zabbix، کاربران می‌توانند تنها با یک کلیک، تحلیل هوشمند هشدارها را انجام دهند. این قابلیت، گزارش کامل علت رخداد و راهکارهای پیشنهادی را به سرعت تولید می‌کند که منجر به کاهش قابل توجه MTTR (میانگین زمان رفع مشکل) می‌شود.

این راهکار علاوه بر تسریع فرآیند رفع خطا، فشار کاری تیم IT را کاهش داده، پایداری سیستم را افزایش می‌دهد و در نهایت صرفه‌جویی قابل توجهی در زمان و منابع به دنبال دارد.

مراحل تنظیم:

  1. در صفحه اصلی Zabbix به بخش Alerts > Scripts بروید و گزینه Create Script را انتخاب کنید.
  2. اسکریپت را به صورت زیر تنظیم کنید:
  • Name: قابل سفارشی‌سازی
  • Scope: انتخاب Manual event action
  • Menu Path: مسیر دلخواه برای دسترسی سریع
  • Type: انتخاب Script
  • Execute on: سرور یا پروکسی Zabbix
  1. در بخش Command این دستور را وارد کنید:
/etc/zabbix/scripts/send_alert_to_ai.sh "{TRIGGER.NAME}" "{TRIGGER.SUBJECT}" "{HOST.NAME}" "{HOST.IP}" "{EVENT.TIME}" "{TRIGGER.SEVERITY}"
عکس اول سناریو اول درباره اسکریپت ها
  1. روی سرور Zabbix یک اسکریپت API بسازید:

4.1 فایل پیکربندی سرور را ویرایش کنید و Global Scripts را فعال کنید:

vi /etc/zabbix/zabbix_server.conf

گزینه زیر را اضافه یا فعال کنید:

EnableGlobalScripts=1

سپس سرور را ریستارت کنید:

systemctl restart zabbix-server

4.2 ساخت اسکریپت فراخوانی API:

mkdir -p /etc/zabbix/scripts
cd /etc/zabbix/scripts
vi send_alert_to_ai.sh

محتوای اسکریپت به شکل زیر خواهد بود (کلید API مربوط به DeepSeek را جایگزین کنید):

#!/bin/bash

API_URL="https://api.deepseek.com/chat/completions"
API_KEY="xxxxxxxxxxxxxxxxxxxx"

TRIGGER_NAME="$1"
ALERT_SUBJECT="$2"
HOSTNAME="$3"
HOST_IP="$4"
EVENT_TIME="$5"
TRIGGER_SEVERITY="$6"

alert_info=$(cat <<EOF
{
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": "You are an assistant focused on responding quickly to system alarms."},
{"role": "user", "content": "The following alarm information is received:\n\n$TRIGGER_NAME\n$ALERT_SUBJECT\n$HOSTNAME\n$HOST_IP\n$EVENT_TIME\n$TRIGGER_SEVERITY\n\nPlease provide cause analysis and solutions in under 300 words."}
],
"stream": false
}
EOF
)

response=$(curl -s -w "\n%{http_code}" -X POST "$API_URL" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d "$alert_info")

http_code=$(echo "$response" | tail -n1)
response_body=$(echo "$response" | sed '$d')

if [ "$http_code" -eq 200 ]; then
if ! command -v jq &> /dev/null; then
echo "jq could not be found, please install it first."
exit 1
fi
content=$(echo "$response_body" | jq -r '.choices[0].message.content')
echo -e "Analysis result:\n$content"
else
echo "failure: HTTP status code $http_code, response: $response_body"
fi

اسکریپت را اجراپذیر کنید:

chmod +x send_alert_to_ai.sh
عکس دوم سناریو اول درباره اجرای اسکریپ ها

نکته: برای پردازش JSON به ابزار jq نیاز است. در صورت نصب نبودن:

Ubuntu/Debian:

apt-get update
apt-get install jq

CentOS/RHEL:

yum install epel-release
yum install jq

بهینه‌سازی‌های اختیاری:

  • افزایش سایز پنجره خروجی در رابط Zabbix با ویرایش فایل CSS
  • بهبود سرعت پاسخ با تغییر تعداد کلمات یا تنظیمات prompt در اسکریپت

سناریو دوم: دستیار هوشمند پایگاه دانش Zabbix

با استفاده از MaxKB (یک سیستم Q&A متن‌باز مبتنی بر مدل‌های زبانی بزرگ)، یک دستیار پایگاه دانش هوشمند برای Zabbix توسعه داده شده است.

این دستیار به صورت یک پنجره شناور در رابط Zabbix قرار می‌گیرد و به کاربر امکان می‌دهد بدون خروج از صفحه، به اسناد و راهنمای رسمی Zabbix دسترسی فوری داشته باشد.

این ادغام با استفاده از قابلیت خزیدن (Crawling) روی مستندات رسمی Zabbix انجام شده و با به‌روزرسانی خودکار، همیشه اطلاعات جدید در دسترس است.

عکسی درباره دستار هوشمند در زبیکس

سناریو سوم: بهبود هشدارها در DingTalk با تحلیل DeepSeek

با اتصال DeepSeek به پیام‌رسان DingTalk، پیام‌های هشدار می‌توانند به‌صورت خودکار تحلیل شده و همراه با علت رخداد و راهکارهای پیشنهادی برای تیم عملیات ارسال شوند.

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

class DingTalkBot(object):
    # Send an alarm
    def send_news_message(self, webhook_url, subject, content, ai_response):
        url = webhook_url
        data = {
            "msgtype": "markdown",
            "markdown": {
                "title": subject,
                "text": f"{subject}\n{content}\n\n【DeepSeek analysis】:\n\n{ai_response}"  
            }
        }
        headers = {'Content-Type': 'application/json'}
        response = requests.post(url, headers=headers, data=json.dumps(data))
        return response

if __name__ == '__main__':
    WEBHOOK_URL = 'https://oapi.dingtalk.com/robot/send?access_token=224c1ff0c6df60a809b3c5b69b8448486b780d292e9d395ac8fbf84980214e30'  # Webhook
    API_URL = 'https://api.deepseek.com/chat/completions'
    API_KEY = "xxxxxxxxxxxxxxxxxxxx"  # DeepSeek API

    if len(sys.argv) < 3:
        print("Error: Not enough arguments provided.")
        sys.exit(1)

    subject = str(sys.argv[1])  
    content = str(sys.argv[2])  

    print(f"Received subject: {subject}")
    print(f"Received content: {content}")

    try:
        headers = {
            'Authorization': f'Bearer {API_KEY}',
            'Content-Type': 'application/json',
        }
        payload = {
            "model": "deepseek-chat",  # DeepSeek
            "messages": [
                {"role": "user", "content": f"If you are a professional IT operation and maintenance expert, please tell me the cause of these alarms and handling suggestions in a concise and professional language with a word limit of 100 words{content}"}
            ]
        }
        ai_response = requests.post(API_URL, headers=headers, json=payload)
        ai_response.raise_for_status()  
        ai_response_content = ai_response.json().get('choices', [{}])[0].get('message', {}).get('content', '')
    except Exception as e:
        ai_response_content = "\nThe interface call timed out or an error occurred. Please check the configuration and try again"

    bot = DingTalkBot()
    response = bot.send_news_message(WEBHOOK_URL, subject, content, ai_response_content)

    if response.status_code == 200:
        print("successfully")
    else:
        print(f"failed: {response.text}")

مراحل تنظیم:

  1. ساخت Bot در DingTalk و دریافت Webhook
  2. نصب Python و کتابخانه‌های موردنیاز
  3. ساخت اسکریپت Python به نام deepseekdingding.py در مسیر /usr/lib/zabbix/alertscripts/
  4. تعریف Media Type جدید در Zabbix
  5. ساخت Action برای ارسال هشدارها به DingTalk
  6. تنظیم مجوزها برای کاربران دریافت‌کننده هشدار
نمونه ای از صفحه تنظیم هشدارها در  DingTalk

سناریو چهارم: تحلیل عمیق سرویس‌های سیستم تنها با یک کلیک

با استفاده از DeepSeek، می‌توان اطلاعاتی نظیر وضعیت سرویس‌ها، لاگ‌ها و تنظیمات سیستم را به صورت خودکار جمع‌آوری و برای تحلیل دقیق به AI ارسال کرد.

ساختار تحلیل شامل موارد زیر است:

  • بررسی وضعیت سرویس
  • مرور پیکربندی‌ها
  • تحلیل لاگ‌ها و خطاهای گذشته
  • پیشنهاد راهکارهای رفع مشکل و بهبود
عکس صفحه ای از سایت زبیکس که نشان از تحلیل عمیق سیستم با استفاده از deepseek میباشد.

این قابلیت به مدیران سیستم کمک می‌کند تا به سرعت مشکلات را شناسایی و رفع کنند و همچنین پیشنهادهای بهینه‌سازی دریافت نمایند.

نتیجه‌گیری:

ادغام‌سازی DeepSeek و Zabbix باعث ارتقاء چشمگیر کیفیت مانیتورینگ، تسریع پاسخ به رخدادها و کاهش هزینه‌های عملیات می‌شود. این راهکارها قابل پیاده‌سازی برای سازمان‌هایی در هر اندازه هستند و به راحتی قابل توسعه و سفارشی‌سازی‌اند.

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