אנדרואיד

הגדרת התצורה של שגיאת nginx ויומן הגישה

#11 Логгирование Nginx

#11 Логгирование Nginx

תוכן עניינים:

Anonim

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

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

Nginx כותב רשומות של אירועים שלה בשני סוגים של יומנים: יומני גישה ויומני שגיאות. יומני גישה כותבים מידע על בקשות לקוח, ויומני שגיאה כותבים מידע על השרת ובעיות היישום.

מאמר זה מתאר כיצד להגדיר ולקרוא את יומני הגישה ושגיאות ה- Nginx.

הגדרת תצורת יומן הגישה

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

ההנחיה log_format מאפשרת לך להגדיר את פורמט ההודעות שנרשמו. הנחיית access_log מאפשרת ומגדירה את מיקום קובץ היומן ואת הפורמט המשומש.

התחביר הבסיסי ביותר של הנחיית access_log הוא כדלקמן:

access_log log_file log_format;

כאשר log_file הוא הנתיב המלא לקובץ היומן, ו- log_format הוא הפורמט שמשמש את קובץ היומן.

ניתן להפעיל את יומן הגישה בחסימה של http , server או location .

כברירת מחדל, יומן הגישה מופעל באופן גלובלי בהנחיית http בתוך קובץ התצורה הראשי של Nginx.

/etc/nginx/nginx.conf

http {… access_log /var/log/nginx/access.log;… }

לקבלת תחזוקה טובה יותר, מומלץ להגדיר קובץ יומן גישה נפרד לכל חסימת שרתים. הוראת access_log שנקבעה בהוראת server מבטלת את access_log בהוראת http (ברמה גבוהה יותר).

/etc/nginx/conf.d/domain.com.conf

http {… access_log /var/log/nginx/access.log;… server { server_name domain.com access_log /var/log/nginx/domain.access.log;… } }

אם לא צוין פורמט יומן, Nginx משתמש בפורמט המשולב שהוגדר מראש ונראה כך:

log_format combined '$remote_addr - $remote_user ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';

כדי לשנות את פורמט הרישום, יש לבטל את הגדרת ברירת המחדל או להגדיר תבנית חדשה. לדוגמה להגדרת תבנית רישום חדשה בשם main שתאריך את הפורמט המשולב עם הערך המציג את הכותרת X-Forwarded-For הוסף את ההגדרה הבאה בהנחיית http או server :

log_format custom '$remote_addr - $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

כדי להשתמש בפורמט החדש, ציין את שמו לאחר קובץ היומן כמוצג להלן:

access_log /var/log/nginx/access.log custom;

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

access_log off;

הגדרת יומן השגיאות

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

הנחיית error_log מאפשרת ומגדירה את המיקום ואת רמת החומרה של יומן השגיאות. זה לובש את הטופס הבא וניתן להגדיר אותו בתוך בלוק http , server או location :

error_log log_file log_level

פרמטר log_level מגדיר את רמת הכניסה. להלן רמות המפורטות לפי חומרתן (מנמוך לגבוה):

  • debug - הודעות באגים. info - הודעות מידע. notice - הודעות. warn - אזהרות. error - שגיאות במהלך עיבוד בקשה. crit - סוגיות קריטיות. דורש פעולה מהירה. alert - התראות. יש לנקוט בפעולה מיידית. emerg - מצב חירום. המערכת במצב בלתי שמיש.

כל רמה ביומן כוללת את הרמות הגבוהות יותר. לדוגמה, אם תגדיר את רמת היומן warn , Nginx גם יומן את הודעות error , crit , alert emerg .

כאשר הפרמטר log_level אינו מוגדר, הוא log_level error .

כברירת מחדל, הנחיית השגיאה_log מוגדרת בהנחיית http בתוך קובץ nginx.conf הראשי:

/etc/nginx/nginx.conf

http {… error_log /var/log/nginx/error.log;… }

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

לדוגמה, כדי להגדיר את יומן השגיאות של domain.com כך שיהיה אז אתה משתמש:

http {… error_log /var/log/nginx/error.log;… server { server_name domain.com error_log /var/log/nginx/domain.error.log warn;… } }

בכל פעם שאתה משנה את קובץ התצורה, עליך להפעיל מחדש את שירות Nginx כדי שהשינויים ייכנסו לתוקף.

מיקום קבצי היומן

כברירת מחדל ברוב ההפצות לינוקס, כמו Ubuntu, CentOS ו- Debian, יומני הגישה והשגיאות ממוקמים בספריית /var/log/nginx .

קריאה והבנה של קבצי יומן ה- Nginx

אתה יכול לפתוח ולנתח את קבצי היומן באמצעות פקודות רגילות כמו cat , less , grep , cut , awk וכן הלאה.

להלן דוגמא לרשומה מקובץ יומן הגישה המשתמש בפורמט ברירת המחדל של יומן Nginx:

192.168.33.1 - - "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"

בואו נשבר את המשמעות של כל שדה ברשומה:

  • $remote_addr - 192.168.33.1 - כתובת ה- IP של הלקוח $remote_addr את הבקשה. $remote_user - - HTTP משתמש $remote_user . כאשר שם המשתמש אינו מוגדר, שדה זה מציג - . - - זמן שרת מקומי. "$request" - "GET / - סוג הבקשה, הנתיב והפרוטוקול. $status - 200 - קוד תגובת השרת. $body_bytes_sent - 396 - גודל תגובת השרת בבתים. "$http_referer" - "-" - כתובת האתר של ההפניה. "$http_user_agent" - Mozilla/5.0… - סוכן המשתמש של הלקוח (דפדפן האינטרנט).

השתמש בפקודת tail כדי לצפות בקובץ היומן בזמן אמת:

tail -f access.log

סיכום

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

Nginx מאפשרת לך להגדיר את יומני הגישה ושגיאות בהתאם לצרכים שלך.

nginx