העבר יומני Apache ל-OpenSearch דרך Logstash

מביאה

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

במדריך הלמידה הזה, אנחנו נדרש אתכם להתקין Logstash על דרפלט, להגדיר אותו לאסוף את היומנים של הApache שלך, ולשלוח אותם ל Managed OpenSearch עבור ניתוח.

דרישות

  1. דרפלט/אים עם שרת רשת Apache מו Installed.
  2. מערך Managed OpenSearch

שלב 1 – התקנת Logstash

לוגסתש יכול להיות מת Instalado באמצעות קבצים בינאריים או דרך מאגרי החבילות. עבור ניהול יותר קל ועדכונים, השימוש במאגרי החבילות הוא בד "" כ מומלץ.

בהצגה זו, אנחנו נדריך אתכם בהתקנת Logstash על הדרפלט שלכם באמצעות מנהלי החבילות APT ו YUM.

בואו נזהה את הOS:

cat /etc/os-release

עבור מערכות מבוססות APT (Ubuntu/Debian)

הורדות והתקנת המפתח החיצון:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg

עלול להיות עליכם להתקין את החבילה apt-transport-https על Debian לפני שימוש:

sudo apt-get install apt-transport-https

שמורות את ההגדרה של המאגר ב /etc/apt/sources.list.d/elastic-8.x.list:

echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

השתמשות בשיטה echo הוספת המאגר של Logstash שנתונה למעלה. אל תשתמשו ב add-apt-repository בגלל שזה יוסף גם פעולה deb-src, אך אנחנו לא מעבירים את החבילה המקורית. אם הוספתם את הפעולה deb-src, תראו שגיאה כמו אחת מהבאה:

Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file)

פשוט ממחישים את הפעולה deb-src מהקובץ /etc/apt/sources.list וההתקנה תעבוד כפי שצפוי.

רץ sudo apt-get update והמאגר מוכן לשימוש. אתם יכולים להתקין אותו בעזרת:

sudo apt-get update && sudo apt-get install logstash

עבור מערכות מבוססות YUM (CentOS/RHEL)

הורדו והתקינו את המפתח הציבורי לחתימה:

sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

הוסיפו את הפרוטו הבא בקובץ /etc/yum.repos.d/logstash.repo שלכם. ניתן להשתמש ב 'tee' כדי לעדכן וליצור את הקובץ.

sudo tee /etc/yum.repos.d/logstash.repo > /dev/null <<EOF
[logstash-8.x]
name=Elastic repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

המאגר שלך מוכן לשימוש. ניתן להתקין אותו באמצעות:

sudo yum install logstash

למידע נוסף, ניתן להפנות למדריך התקנת Logstash.

שלב 2 – קונפיגורציה של Logstash לשליחת יומנים לOpenSearch

תשתית Logstash מכילה שלושה שלבים מרכזיים: קלט, סינון ופלט. לתשתיות Logstash יש גישה לתוספים. ניתן להשתמש בתוספים הקהילתיים או ליצור את השלכותינו.

  • קלט: השלב הזה אוסף נתונים ממקורות שונים. Logstash תומך במספר תוספים קלט כדי להתמודד עם מקורות נתונים כמו קבצי יומן, מסדי נתונים, תורי הודעות ושירותי ענן.

  • סינון: בשלב זה מעבדים ומשנים את המידע שנאסף בשלב הקלט. סינונים יכולים לשנות, להוסיף ולסדר את המידע כדי להפוך אותו ליותר שימושי ויותר קל לניתוח.

  • פלט: בשלב זה שולחים את המידע המעובד ליעד. יעדים עשויים לכלול מסדי נתונים, קבצים ואחסנים מידע כמו OpenSearch.

שלב 3 – התקנת תוסף הפלט Open Search

תוסף הפלט OpenSearch ניתן להתקין על ידי הרצת הפקודה הבאה:

/usr/share/logstash/bin/logstash-plugin install logstash-output-opensearch

מידע נוסף ניתן למצוא במאגר logstash-output-opensearch-plugin.

כעת בואו ניצור תשתית:

יצירת קובץ חדש בנתיב /etc/logstash/conf.d/ בשם apache_pipeline.conf, והעתקת התוכן הבא.

input {
  file {
    path => "/var/log/apache2/access.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => "apache_access"
  }

  file {
    path => "/var/log/apache2/error.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => "apache_error"
  }
}

filter {
  if "apache_access" in [tags] {
    grok {
        match => { "message" => "%{HTTPD_COMBINEDLOG}" }
    }
    mutate {
        remove_field => [ "message","[log][file][path]","[event][original]" ]
      }
   } else {
   grok {
        match => { "message" => "%{HTTPD24_ERRORLOG}" }
    }
   }
}

output {
  if "apache_access" in [tags] {
  opensearch {
    hosts       => "https://<OpenSearch-Hostname>:25060"
    user        => "doadmin"
    password    => "<your_password>"
    index       => "apache_access"
    ssl_certificate_verification => true
  }

  } else {
  opensearch {
    hosts       => "https://<OpenSearch-Hostname>:25060"
    user        => "doadmin"
    password    => "<your_password>"
    index       => "apache_error"
    ssl_certificate_verification => true
  }
  }
}

החלפת <OpenSearch_Host> עם שם המחשב של שרת OpenSearch שלך ו<OpenSearch_Password> עם הסיסמה ל-OpenSearch שלך.

בואו נפרק את ההגדרה העליונה.

  • INPUT: משמש להגדרת מקור לאירועים. משתמשים בתוסף 'file' כאן.

  • path => “/var/log/apache2/access.log” : מצביע על הנתיב לקובץ רישום Apache שלוגסטאש יקרא ממנו

    דאגו שלשירות Logstash יש גישה לנתיב הקלט.

  • start_position => “beginning”: מגדיר איפה Logstash צריך להתחיל לקרוא את קובץ הלוג. "beginning" מראה שלוגסטאש יתחיל לעבד את הקובץ מההתחלה, במקום מהסוף

  • sincedb_path => "/dev/null": מציין את הנתיב לקובץ sincedb. קבצי sincedb משמשים את Logstash למעקב אחר המיקום הנוכחי בקבצי לוג, ומאפשרים לו להמשיך מהמקום שבו הפסיק במקרה של הפעלה מחדש או כשל.

  • tags => "apache_access": מקצה תג לאירועים הנקראים מקלט זה. תגים שימושיים לזיהוי וסינון אירועים בתוך Logstash, ולעיתים קרובות משמשים בשלבים של פלט או סינון בתצורה. אנחנו משתמשים בתגים למטרה זו

  • FILTER: משמש לעיבד את האירועים.

    התחלה עם משתנויות:

    (if "apache_access" in [tags]):
    

    זה מבחן אם תג apache_access קיים בשדה [tags] של האירועים המגיעים. אנחנו משתמשים במשתנה זו כדי ליישם את הפילטר המתאים של GROK עבור מערכת הגלובליסציה וגלובליסציות שגיאות.

  • מסנן Grok (עבור מערכת Apache Access Logs):

    grok {
        match => { "message" => "%{HTTPD_COMBINEDLOG}" }
    }
    

    המסנן grok %{HTTPD_COMBINEDLOG} הוא תבנית מוגדרת ברשת Logstash שמשתמשת בעזרתה לניתוח את הפורマט של לוגי גישת Apache. היא מוציאה שדות כמו כתובת IP, זמן מעבר, שיטת HTTP, אורך ומספר מבנה סטטוס ועוד מהם, משדה המסרים של אירועים קומים.

  • סינון שינוי הסר (אופציונלי): לאחר שניתוח יומני Apache, אנו משתמשים ב-mutate-remove כדי להסיר שדות מסוימים.

    mutate {
        remove_field => [ "message","[log][file][path]","[event][original]" ]
    }
    
  • תנאי אחר: הבלוק האחר מושפע אם אין את התג apache_access בתוך [תגיות]. הבלוק הזה מכיל פילטר GROK נוסף ללוגים של חולים של Apache.

    grok {
        match => { "message" => "%{HTTPD24_ERRORLOG}" }
    }
    

    הפילטר GROK הזה %{HTTPD24_ERRORLOG} מעבד מסרים התואמים לפורמט יומן השגיאות של Apache. הוא משליט שדות רלוונטיים ליומני שגיאות כמו זמן, רמת הלוג, מסר שגיאה ועוד.

    תבניות GROK ניתן למצוא ב: https://github.com/logstash-plugins/logstash-patterns-core/tree/main/patterns.

  • OUTPUT: התוסף הפלט משלח אירועים ליעד מסוים.

    בלוק הפלט מתחיל עם תנאי if. אנו משתמשים בתנאי if כאן

    אם "apache_access" ב [תגיות] {}
    

    תנאי ה-if הזה משמש לניתוב הרישומים ל-OpenSearch לשני מדדים נפרדים, apache_error ו-apache_access.

    בואו נחקור את תוסף הפלט OpenSearch:

    hosts            => "https://XXX:25060"  שם המארח Open search שלך
    user             => "doadmin"            שם המשתמש Open search שלך
    password         => "XXXXX"              סיסמה OpenSearch
    index            => "apache_error"       שם המדד ב-OpenSearch
    ssl_certificate_verification => true     מאשרת תעודת SSL
    

שלב 4 – התחלת השירות Logstash

אחרי שהפינלין מוגדר, נתחיל את השירות Logstash:

systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service

שלב 5 – בדיקת התקלות

בדיקת הקישוריות

ניתן לבדוק שLogstash יכול להתחבר לOpenSearch באמצעות בדיקת הקישוריות:

curl -u your_username:your_password -X GET "https://your-opensearch-server:25060/_cat/indices?v"

החלף your-opensearch-server עם שמת המארח של השרת הOpenSearch שלך וyour_username, your_password עם המידע הפרטי שלך לOpenSearch.

רכבת המידע

ודא שהמידע מועבר באופן נכון לסינקבלציה בOpenSearch:

curl -u your_username:your_password -X GET "http://your-opensearch-server:25060/<your-index-name>/_search?pretty"

החלף your-opensearch-server עם שמת המארח של השרת הOpenSearch שלך וyour_username, your_password עם המידע הפרטי שלך לOpenSearch. באותו אופן, החלף your-index-name עם שמו הסינקבלציה.

חומת אש והגדרות רשת

ודא שכללי חומת האש והגדרות הרשת מאפשרים תעבורה בין Logstash ל-OpenSearch על פורט 25060.

יומנים

יומני ה-Logstash נמצאים ב/var/log/logstash/logstash-plain.log

לפרטים נוספים, עיין בפתרון בעיות.

סיכום

במדריך זה, עברנו על הגדרת Logstash לאיסוף והעברת יומני Apache ל-OpenSearch. הנה תקציר מהיר של מה שסקרנו:

התקנת Logstash: סקרנו כיצד להשתמש במנהלי החבילות APT או YUM, תלוי בהפצת הלינוקס שלך, כדי להתקין את Logstash על ה-Droplet שלך.

הגדרת Logstash: יצרנו והתאמנו את קובץ ההגדרות של Logstash כדי לוודא שיומני Apache מפורשים כהלכה ונשלחים ל-OpenSearch.

אימות ב-OpenSearch: הגדרנו תבנית אינדקס ב-OpenSearch Dashboards כדי לאשר שהיומנים שלך מתאונדקסים כראוי ונראים לניתוח.

עם השלמת השלבים הללו, כעת אמור להיות לך מערך פונקציונלי שבו Logstash אוסף יומני Apache ושולח אותם ל-OpenSearch.

Source:
https://www.digitalocean.com/community/tutorials/forward-apache-logs-to-opensearch-via-logstash