הגדרת לוגסטש על דראופלטים כדי להעביר יומני Nginx ל-OpenSearch מנוהל

מביא

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

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

דרישות

מקרה שימוש

אתה אולי תזדקק להגדרה הזו אם אתה רוצה ל:

  • מעקב ופתרון בעיות: עקב אחר הביצועים והשגיאות של השרת האינטרנט דרך ניתוח גישות זמניות.
  • ניתוח ביצועים: לקבל תובנות על תבניות התעבורה ברשת ומדדי השרת.
  • מרכזיזציה של הגישות: אילוץ גישות מרובות משרתי Nginx למקרה אחד של OpenSearch בשביל ניהול קל יותר.

הערה: הזמן הדרך להתקין צריך להיות בערך 30 דקות.

שלב 1 – התקנת Logstash על דיפלוטים

לוגסתש יכול להיתקע באמצעות קבצים בינאריים זמינים פה או באמצעות מאגרי חבילות מותאמים למערכת ההפעלה שלך. עבור ניהול קל יותר ועדכונים, השימוש במאגרי חבילות הם בד "" כ מומלץ. אתה יכול להשתמש במנהל החבילות APT על מערכות בעלות Debian כמו Ubuntu, בעוד על מערכות בעלות Red Hat כמו CentOS או RHEL, אתה יכול להשתמש בyum. שתי השיטות האלה מובטחות שלוגסתש יותקע בדרך המתאימה למערכת הניהול המערכתית שלך עבור החבילות, מוסיף לקל ההתקעה והשגרה.

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

כדי למצוא את המערכת ההפעלה, היית צריך לבצע את הפקודה הבאה:

cat /etc/os-release

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

1. הורוד והתקע את המפתח הציבורי לחתיכה:

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

2. התקע את apt-transport-https אם זה עדיין לא נתקע:

sudo apt-get install apt-transport-https

3. הוסף ושמר על ההגדרה של המאגר של Logstash לרשימת המקורות שלך apt:

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

הערה: ודא שאתה לא משתמש בפקודות add-apt-repository בגלל שהן עשויות להוסיף פריט deb-src שאינו נתמך. אם תמצאו שגיאה שקשורה לפריט deb-src, בחרו להסיר אותו מהקובץ /etc/apt/sources.list. אם הוספתם את הפריט 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, ההתקנה צריכה לעבוד כפועלת.

4. עדכון רשימת הפקידים עבור האגף החדש:

sudo apt-get update

5. התקנת Logstash בעזרת מנהל החבילות apt:

sudo apt-get install logstash

6. התחלת Logstash והאפשרות להתחיל בעצמה באתחול:

sudo systemctl start logstash
sudo systemctl enable logstash

עכשיו, Logstash מותקן ופועל על המערכת שלך.

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

1. הורדת והתקנת המפתח הציבורי לאגף Logstash:

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

2. יצירת קובץ אגף ל Logstash ב /etc/yum.repos.d/. לדוגמה, יצירת קובץ שנקרא logstash.repo. אתה יכול להעתיק ולהדביק את התוכן הבא כדי ליצור את הקובץ ולעדכן את התוכן:

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

האגף מוכן לשימוש.

3. התקנת Logstash בעזרת מנהל החבילות YUM:

sudo yum install logstash

4. התחלת Logstash והאפשרות להתחיל בעצמה באתחול:

sudo systemctl start logstash
sudo systemctl enable logstash

לגוסטאש ניתן עכשיו ומופעל על המערכת שלך.

שלב 2 – התקנת תוסף יוצא פתוח לחיצון

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

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

ניתן למצוא מידע נוסף על התוסף באתר מאגר תוספים לגוסטאש-יוצא-לחיצון-opensearch.

שלב 3 – התאם את לוגסתש לשליחת לוגי Nginx אל החיצון OpenSearch

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

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

עכשיו בואו ניצור צירוף.

1. יצירה של קונFIGירציית Logstash בת. שם /etc/logstash/conf.d/nginx-to-opensearch.conf עם התוכן הבא:

input {
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_access"]
  }
  file {
    path => "/var/log/nginx/error.log"
    start_position => "beginning"
    sincedb_path => "/dev/null"
    tags => ["nginx_error"]
  }
}
filter {
  if "nginx_access" in [tags] {
    grok {
      match => { "message" => "%{IPORHOST:client_ip} - %{USER:ident} \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}\" %{NUMBER:response} %{NUMBER:bytes} \"%{DATA:referrer}\" \"%{DATA:user_agent}\"" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  } else if "nginx_error" in [tags] {
    grok {
      match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{LOGLEVEL:level}\] \[%{DATA:pid}\] \[%{DATA:tid}\] %{GREEDYDATA:error_message}" }
    }
    mutate {
      remove_field => ["message", "[log][file][path]", "[event][original]"]
    }
  }
}
output {
  if "nginx_access" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_access-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  } else if "nginx_error" in [tags] {
    opensearch {
      hosts => ["https://<OpenSearch-Hostname>:25060"]
      user => "doadmin"
      password => "<your_password>"
      index => "nginx_error-%{+YYYY.MM.dd}"
      ssl => true
      ssl_certificate_verification => true
    }
  }
}

החלפה:

  • OpenSearch-Hostname עם שם המארח של השרת ה OpenSearch שלך.
  • <your_password> עם סיסמת ה OpenSearch שלך.

2. יישם את ההגדרה החדשה על ידי הפעלת Logstash מחדש:

sudo systemctl restart logstash

3. בדיקה בעזרת המסמכים של Logstash כדי לוודא שזה מעבד ומשדר את הנתונים בצורה נכונה:

sudo tail -f /var/log/logstash/logstash-plain.log

שינויים בהגדרה nginx-to-opensearch.conf

קבעת קבע

קבע הקבע של שני קבעי קבצים לקריאת מסמכים:

מסמכי ההגשה:
/var/log/nginx/access.log (עבור מסמכי הגישה)
/var/log/nginx/error.log (עבור מסמכי השגיאות)
מיקום ההתחלה: beginning – קוראים מההתחלה של קבצי המסמכים.
מקום הסינסידבי: /dev/null – מכיל את העיתונים המקבלים באופן מתמשך.
תגיות:
["nginx_access"] עבור מסמכי הגישה
["nginx_error"] עבור מסמכי השגיאות.

הערה: ודא ששירות הLogstash יש גישה למסלולים הקלט.

מסנן

ברגע המסנן מעבד מסמכים על פי תגיות שלהם:

עיבוד מסמכים:
מסמכים גישה:
הוא משתמש במסנן grok כדי לפרש את התבנית של המסמכים הגישה, ומוציא תחביות כמו client_ip, timestamp, method, request, http_version, response, bytes, referrer, וuser_agent.
הוצא את המסמך המקורי message ושדות מידע סוג מסויים.

מסמכים שגיאה:
הוא בודק על תגית nginx_error ומיישם מסנן grok כדי לפרש תחביות כמו timestamp, level, pid, tid, וerror_message.
בנוסף, הוצא את המסמך המקורי message ושדות מידע סוג מסויים.

יוצאה

ברגע היוצאה מעבירה אירועים לOpenSearch על פי תגיות שלהם:

ניווט אל OpenSearch:
עבור מסמכים גישה ושגיאה, היא מציעה:
מארחים: URL של המערכת OpenSearch.
משתמש: doadmin למניעה.
סיסמה: סיסמת הOpenSearch שלך.
מאגר:
nginx_access-%{+YYYY.MM.dd} עבור מסמכים גישה
nginx_error-%{+YYYY.MM.dd} עבור מסמכים שגיאה
הגדרות SSL: מאפשרות SSL ואימות הוליות.

שלב 4 – הגדרת OpenSearch

1. פתח את הדפדפן המקוון שלך ועבר לכתובת הלוח הבית של OpenSearch:

https://<OpenSearch-Hostname>

החלף OpenSearch-Hostname עם שמת ה服务器 של השרת ה OpenSearch שלך.

2. יצירת תבנית רשימה.
a. בסדרה השמאלית, עבר לניהול > ניהול לוחות > תבניות רשימה.
b. לחץ יצירת תבנית רשימה בפינה העליונה הימנית.
c. בחר nginx_access-* או nginx_error-* כתבנית רשימה עבור כל רשימות שנוצרות על ידי Logstash ולחץ שלב הבא.
d. לחץ יצירת תבנית רשימה.

3. ודא שהתבנית הרשימה נוצרה בהצלחה ונראית ברשימת התבניות הרשימה.

4. בסדרה השמאלית, הביט בגילוי ובחר את התבנית הרשימה שנוצרת (nginx_access-* או nginx_error-*). ודא שפרטים מעבר לרשימות נראים ומודדים בצורה נכונה.

5. יצירת הדמיונים ולוחות. בקר באיך ליצור לוח ב OpenSearch עבור פרטים נוספים.

תיקון בעיות

בדיקת חיבור

ניתן לבדוק שלוגסתש יכול להתחבר ל OpenSearch על-ידי בדיקת החיבור:

curl -u doadmin:your_password -X GET "https://<OpenSearch-Hostname>:25060/_cat/indices?v"

שיחלף:

  • OpenSearch-Hostname עם שמת ה服务器 של ה OpenSearch שלך.
  • <your_password> עם סיסמת ה OpenSearch שלך.

אינגסטיציה מידע

ניתן לוודא שהמידע מוערך באופן מקובל ב OpenSearch בעזרת הפקודה הבאה של curl:

curl -u doadmin:your_password -X GET "http://<OpenSearch-Hostname>:25060/nginx-logs-*/_search?pretty"

שיחלף:

  • OpenSearch-Hostname עם שמת ה服务器 של ה OpenSearch שלך.
  • <your_password> עם סיסמת ה OpenSearch שלך

מסגרת המחשב והגדרות רשת

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

סיכום

בדרך זו, למדת איך להגדיר Logstash כדי לאסוף ולשדר את המערכת הגילוי של Nginx אל שרת OpenSearch.

הבחנת באיך להשתמש במנהלי החבילות apt או yum, בהתאמה לחברה הלוקאלית שלך, כדי לגדל Logstash על הדרפלט שלך. אתה גם יצר והתאמן את הקונFIGURATION של Logstash כדי לוודא שהמערכת הגילוי של Nginx נפרסה ונשלחה נכונה אל שרת OpenSearch. אחר כך, הגדירת תבנית מאפיין בשרת OpenSearch Dashboards כדי לבדוק שהגילויים מודדים באופן נכון ונראים למחקר.עם השלבים האלה בוצעים, עכשיו צריך להיות לך הגדרה פעולה בה לוגסתש אוסף את הגילויים של Nginx ושולחם אל שרת OpenSearch. ההגדרה הזו מאפשרת לך להשתמש בכלים החיפוש וההדמייה החזקים של OpenSearch כדי לנתח את גילויי השרת שלך.

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

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