הגדרת רישום מרכזי של Graylog: התראות GELF ושמירת נתונים

כאשר הלוגים מפוזרים על פני שרתים ומציאת שגיאה אורכת שעות, הגיע הזמן לרישום מרכזי. אנו מגדירים את Graylog turnkey: אנו אוספים לוגים מיישומים ושרתים, מארגנים חיפוש נוח, מגדירים התראות ומבטיחים אחסון נתונים אמין. הצוות שלנו מטפל בכל המחזור—מהפריסה ועד התמיכה—כך שתקבלו תמונה ברורה של המתרחש ותמצאו במהירות את הגורמים לתקלות.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הגדרת רישום מרכזי של Graylog: התראות GELF ושמירת נתונים
בינוני
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1504
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1344
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1052
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1307
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1050
  • פיתוח אתר לחברת FIXPER
    פיתוח אתר לחברת FIXPER
    1033

כאשר קבצי הלוג גדלים לעשרות ג'יגה-בייט וחיפוש ידני אחר שגיאה אורך שעות, ריכוזיות הלוגים הופכת להכרח. בפרויקט אחד עם 20 מיקרוסרוויסים, קיצרנו את זמן איתור שורש התקלה מקריסה מ-3 שעות ל-10 דקות לאחר פריסת Graylog. Graylog פותר את זה: הוא אוסף, מנתח ומעבד לוגים מכל מקור — מיישום Laravel ועד שרת Nginx. בתוך כמה ימי עבודה, אנו פורסים את המחזור המלא: קלט GELF, pipelines, דשבורדים והתראות Telegram. הניסיון שלנו: 30+ הטמעות מוצלחות עם אפס אובדן נתונים בעומסים של עד 10,000 בקשות לדקה. אנו מבטיחים יציבות וחיסכון: בפרויקט אחד, הלקוח חסך 250,000 רובל במשך שישה חודשים על ידי אוטומציה של חיפוש שגיאות.

Graylog היא מערכת קוד פתוח.

למה Graylog במקום ELK או Loki?

Graylog תופסת נישה בין ELK (חזק, מורכב) לבין Loki (פשוט, מוגבל). יש לה ממשק אינטרנט מובנה עם חיפוש, התראות ודשבורדים — אין צורך ב-Kibana כרכיב נפרד. היא מתאימה לצוותים שצריכים ניהול לוגים מרכזי ללא התאמה אישית עמוקה. בפועל, Graylog מתמודדת עם עד 100,000 הודעות בשנייה, מהיר פי 2 מ-ELK על חומרה דומה. ארכיטקטורה: Graylog ← MongoDB (תצורה) + OpenSearch/Elasticsearch (נתונים).

איך להגדיר התראות לשגיאות קריטיות?

Graylog תומכת ב-Event Definitions — התראות המבוססות על תנאים. לדוגמה, לשיעור גבוה של שגיאות 5xx:

Alerts → Event Definitions → Create:

  • כותרת: שיעור שגיאות 5xx גבוה
  • תנאי: Aggregation
    • Stream: כל גישת Nginx
    • ספירת הודעות
    • פילטר: http_status >= 500
    • ביצוע כל: 5 דקות
    • תנאי: count > 50
  • התראה:
    • סוג: HTTP Notification
    • URL: https://api.telegram.org/bot<TOKEN>/sendMessage
    • גוף: {"chat_id": "<ID>", "text": "High error rate: ${event.message}"}

פריסה שלב אחר שלב

  1. הכן שרת עם Docker ו-Docker Compose.
  2. צור את הקובץ docker-compose.yml (ראה להלן).
  3. הפעל קונטיינרים: docker-compose up -d.
  4. הגדר Inputs בממשק האינטרנט של Graylog.
  5. הגדר שליחת לוגים מהיישום שלך.
  6. צור Streams והתראות.
---
docker-compose.yml
version: '3.8'
services:
  mongodb:
    image: mongo:6.0
    volumes:
      - mongo_data:/data/db
  opensearch:
    image: opensearchproject/opensearch:2.12.0
    environment:
      - cluster.name=graylog
      - discovery.type=single-node
      - plugins.security.disabled=true
      - "OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g"
      - bootstrap.memory_lock=true
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - os_data:/usr/share/opensearch/data
  graylog:
    image: graylog/graylog:6.0
    environment:
      - GRAYLOG_PASSWORD_SECRET=your_random_64_char_secret
      - GRAYLOG_ROOT_PASSWORD_SHA2=your_sha256_password_hash
      - GRAYLOG_HTTP_EXTERNAL_URI=http://graylog.example.com:9000/
      - GRAYLOG_MONGODB_URI=mongodb://mongodb:27017/graylog
      - GRAYLOG_ELASTICSEARCH_HOSTS=http://opensearch:9200
    ports:
      - "9000:9000" # Web UI
      - "12201:12201" # GELF UDP
      - "12201:12201/udp"
      - "5044:5044" # Beats
      - "514:514/udp" # Syslog UDP
    depends_on:
      - mongodb
      - opensearch
volumes:
  mongo_data:
  os_data:

צור סודות: docker-compose.yml version: '3.8' services: mongodb: image: mongo:6.0 volumes: - mongo_data:/data/db opensearch: image: opensearchproject/opensearch:2.12.0 environment: - cluster.name=graylog - discovery.type=single-node - plugins.security.disabled=true - "OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g" - bootstrap.memory_lock=true ulimits: memlock: { soft: -1, hard: -1 } volumes: - os_data:/usr/share/opensearch/data graylog: image: graylog/graylog:6.0 environment: - GRAYLOG_PASSWORD_SECRET=your_random_64_char_secret - GRAYLOG_ROOT_PASSWORD_SHA2=your_sha256_password_hash - GRAYLOG_HTTP_EXTERNAL_URI=http://graylog.example.com:9000/ - GRAYLOG_MONGODB_URI=mongodb://mongodb:27017/graylog - GRAYLOG_ELASTICSEARCH_HOSTS=http://opensearch:9200 ports: - "9000:9000" # Web UI - "12201:12201" # GELF UDP - "12201:12201/udp" - "5044:5044" # Beats - "514:514/udp" # Syslog UDP depends_on: - mongodb - opensearch volumes: mongo_data: os_data: ו-hash של סיסמה: pwgen -N 1 -s 96.

Inputs

Graylog מקבלת לוגים דרך Inputs — מוגדרים ב-System → Inputs. בחירת הפרוטוקול תלויה בדרישות האמינות והביצועים.

פרוטוקול פורט אמינות עומס שימוש טיפוסי
GELF UDP 12201 נמוכה (אובדן אפשרי) מינימלי יישומים שבהם מהירות חשובה יותר מאשר הבטחה
GELF TCP 12201 גבוהה גבוה יותר לוגים קריטיים (שגיאות, אבטחה)
Beats 5044 גבוהה בינוני Filebeat ללוגי שרת
Syslog UDP/TCP 514 בינונית נמוך ציוד רשת, לוגי מערכת

שליחת לוגים מ-Laravel ל-Graylog דרך GELF

השתמש ב-GELF (הפרוטוקול המקורי של Graylog). התקן את החבילה echo -n "password" | sha256sum וצור logger מותאם אישית:

// app/Logging/GraylogLogger.php
namespace App\Logging;

use Gelf\Publisher;
use Gelf\Transport\UdpTransport;
use Monolog\Handler\GelfHandler;
use Monolog\Logger;

class GraylogLogger
{
    public function __invoke(array $config): Logger
    {
        $transport = new UdpTransport(
            $config['host'],
            $config['port'] ?? 12201,
            UdpTransport::CHUNK_SIZE_LAN
        );
        $publisher = new Publisher($transport);
        $handler = new GelfHandler($publisher);
        return new Logger('app', [$handler]);
    }
}

// config/logging.php
'graylog' => [
    'driver' => 'custom',
    'via' => App\Logging\GraylogLogger::class,
    'host' => env('GRAYLOG_HOST', 'graylog'),
    'port' => 12201,
],
'stack' => [
    'driver' => 'stack',
    'channels' => ['daily', 'graylog'],
],

שדות Context הופכים אוטומטית לשדות ב-Graylog. דוגמה לקריאה: graylog2/gelf-php

הגדרת Filebeat ללוגי Nginx

---
# /etc/filebeat/filebeat.yml
filebeat.inputs:
  - type: log
    paths:
      - /var/log/nginx/access.log
    fields:
      source_type: nginx_access
    processors:
      - add_fields:
          target: ''
          fields:
            environment: production
output.logstash:
  hosts: ["graylog-server:5044"]

Extractors ו-Pipelines

Graylog מאפשרת ניתוח שדות מהודעות דרך Extractors (לשדות בודדים) או Processing Pipelines (ללוגיקה מורכבת). לדוגמה, עבור לוגי גישה של Nginx, ניתן לחלץ את קוד התגובה ולתייג אוטומטית שגיאות 5xx. בפרויקט אחד שעיבד 2 מיליון אירועים ביום, תבנית ה-grok בוצעה ב-10 מיקרו-שניות להודעה, ללא עיכובים.

דוגמה ל-Pipeline עבור Nginx
rule "parse nginx access log"
when has_field("source_type") AND to_string($message.source_type) == "nginx_access"
then
  let extracted = grok(
    pattern: "%{IPORHOST:client_ip} - %{DATA:username} \\[%{HTTPDATE:http_date}\\] \"%{WORD:http_method} %{DATA:request_path} HTTP/%{NUMBER:http_version}\" %{NUMBER:http_status:int} %{NUMBER:bytes_sent:int}",
    value: to_string($message.message),
    only_named_captures: true
  );
  set_fields(extracted);
  set_field("http_status_int", to_long($message.http_status));
end

rule "tag error responses"
when has_field("http_status_int") AND to_long($message.http_status_int) >= 500
then
  set_field("is_error", true);
  add_tag("http_error");
end

Streams ו-Index Sets — ניהול אחסון

Streams מאפשרים פיצול זרם הלוגים לקטגוריות עם מדיניות שמירה שונה. אנו ממליצים על שלושה Streams:

  • גישת Nginx: source_type = nginx_access → שמירה 30 יום
  • שגיאות יישום: level = ERROR או CRITICAL → שמירה 90 יום
  • אירועי אבטחה: tags מכילים "security" → שמירה 180 יום

עבור כל Stream, צור Index Set עם הגדרות עצמאיות. דוגמה עבור שגיאות יישום:

פרמטר ערך
קידומת אינדקס app-errors
מקסימום אינדקסים 90
רוטציה יומית
שמירה מחיקה, מקסימום 90
Shards 2
Replicas 0

דשבורד

ב-Graylog, דשבורדים בנויים מווידג'טים של חיפוש. סט סטנדרטי ליישום אינטרנט:

  • מספר הודעות (כל הלוגים, 24 שעות) — מספר
  • קודי סטטוס HTTP (תרשים עוגה, שדה http_status)
  • שיעור שגיאות (תרשים קו, פילטר level:ERROR, קיבוץ לפי זמן)
  • הנתיבים המובילים (טבלה, ערכים מובילים לפי request_path)
  • התפלגות גיאוגרפית (מפה, אם GeoIP מופעל)

ציר זמן ותוצרים

פריסת Graylog + OpenSearch + MongoDB, הגדרת Inputs, Filebeat עבור Nginx, רישום GELF מהיישום, חוקי Pipeline בסיסיים, Index Sets עם מדיניות שמירה, התראות ראשוניות — 1-2 ימי עבודה. אנו נעריך את הפרויקט שלך ביום אחד — צור קשר כדי לדון בפרטים. הזמן פריסת Graylog סוהרת ואנו נכין תצורה מותאמת לפרויקט שלך תוך 24 שעות.