כיצד למעקב אחר העומס וסטטיסטיקת העמוד של שרת האינטרנט של Apache

במאמר זה תלמד כיצד לנטר את עומס השרת האינטרנט Apache ואת הבקשות באמצעות מודול mod_status בהפצות הלינוקס שלך כגון CentOS, RHEL, ו־Fedora.

מהו mod_status?

mod_status הוא מודול של Apache המסייע בניטור של עומס השרת האינטרנט וחיבורי ה־httpd הנוכחיים עם ממשק HTML שניתן לגשת אליו דרך דפדפן אינטרנט.

מודול ה־mod_status של Apache מציג דף HTML פשוט המכיל את המידע על סטטיסטיקות הנוכחיות של השרת האינטרנט, כולל.

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

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

סביבת בדיקה

השתמשנו בסביבת הבדיקה הבאה Testing Environment עבור מאמר זה כדי לחקור עוד על mod_status עם דוגמאות פרקטיות ותמונות מסך.

  1. מערכת ההפעלה – CentOS 8/7
  2. אפליקציה – שרת האינטרנט Apache
  3. כתובת IP – 5.175.142.66
  4. DocumentRoot – /var/www/html
  5. קובץ הגדרות של Apache – /etc/httpd/conf/httpd.conf
  6. פורט HTTP ברירת מחדל – 80 TCP
  7. בדיקת הגדרות התצורה – httpd -t

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

  1. צור את השרת ואירח את האתר שלך ב-Linux

כיצד להפעיל את mod_status ב-Apache

ההתקנה הברירת מחדל של Apache מגיעה עם mod_status מופעל. אם לא, וודאו להפעיל אותו בקובץ ההגדרות של Apache.

[root@tecmint ~]# vi /etc/httpd/conf/httpd.conf

חיפוש אחר המילה "mod_status" או המשך לגלילה עד שתמצאו שורה המכילה.

#LoadModule status_module modules/mod_status.so

אם אתם רואים תו '#' בתחילת "LoadModule", זאת אומרת ש- mod_status מנוטרל. הסירו את ה-'#' כדי להפעיל את mod_status.

LoadModule status_module modules/mod_status.so

הגדרת mod_status

עכשיו חפשו שוב את המילה "Location" או המשיכו לגלילה עד שתמצאו קטע עבור mod_status שצריך להיראות דומה למה שלמעלה.

# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
# Change the ".example.com" to match your domain to enable.
#
#<Location /server-status>
#    SetHandler server-status
#    Order deny,allow
#    Deny from all
#    Allow from .example.com
#</Location>

בקטע שלמעלה, בצע הערה מהשורות עבור Location directive, SetHandler, וה- הגבלות ספרייה על פי הצורך שלך. לדוגמה, אני משמור על זה פשוט עם Order Allow, deny וזה מותר לכל.

<Location /server-status>
   SetHandler server-status
   Order allow,deny
   Deny from all
   Allow from all 
</Location>

הערה: ההגדרה שלמעלה היא הגדרת ברירת מחדל עבור אתר האינטרנט המוגדר בברירת מחדל של Apache (אתר אינטרנט יחיד). אם יש לך אחד או יותר מארחי Virtual Hosts של Apache, ההגדרה שלמעלה לא תעבוד.

לכן, בגרסת עקרונית, עליך להגדיר את אותו ההגדרה עבור כל Virtual Host עבור כל דומיין שהגדרת ב-Apache. לדוגמה, ההגדרת Virtual Host עבור mod_status תיראה כך.

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /var/www/html/example.com
    ServerName example.com
    ErrorLog logs/example.com-error_log
    CustomLog logs/example.com-access_log common
<Location /server-status>
   SetHandler server-status
   Order allow,deny
   Deny from all
   Allow from example.com 
</Location>
</VirtualHost>

Enable ExtendedStatus

ההגדרות של "ExtendedStatus" מוסיפות מידע נוסף לדף הסטטיסטיקה כמו שימוש במעבד, בקשות לשנייה, סך התנועה הכללית, וכו'. כדי לאפשר את זה, ערוך את אותו קובץ httpd.conf וחפש את המילה "Extended" והסר הערה מהשורה וקבע את המצב "On" עבור ההוראת ExtendedStatus.

# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
ExtendedStatus On

אתחל שוב את Apache

עכשיו וודא שהפעלת והגדרת בצורה נכונה את עמוד ה- server-status של Apache. תוכל גם לבדוק את השגיאות בהגדרת ה- httpd.conf באמצעות הפקודה הבאה.

[root@tecmint ~]# httpd -t

Syntax OK

לאחר שהדקדוק יאומת כ-OK,‏ httpd ניתן יהיה להפעיל מחדש את שירות.

[root@tecmint ~]# service httpd restart
OR
[root@tecmint ~]# systemctl restart httpd
Stopping httpd:                                          [  OK  ]
Starting httpd:                                          [  OK  ]

גישה לעמוד mod_status

עמוד המצב של Apache יהיה נגיש באמצעות שם התחום שלך עם "/server-status" בכתובת URL הבאה.

http://serveripaddress/server-status

OR

http://serev-hostname/server-status

תראו משהו דומה לעמוד הבא כאשר ExtendedStatus מופעל.

Apache mod_status View

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

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

גם ניתן לרענן את העמוד בכל מספר שניות (נניח 5 שניות) כדי לראות את הסטטיסטיקות המעודכנות. כדי להגדיר רענון אוטומטי, הוסף "?refresh=N" בסוף URL. כאשר N ניתן להחלפה במספר השניות שבהן ברצונך לעדכן את העמוד.

http://serveripaddress/server-status/?refresh=5
Apache mod_status Refresh

תצוגת עמוד מצב ממשק שורת הפקודה

ניתן גם להציג את עמוד המצב של Apache ממשק שורת הפקודה באמצעות דפדפני שורת פקודה מיוחדים הנקראים links or lynx. ניתן להתקין אותם באמצעות מנהל החבילות ברירת המחדל הנקרא yum כפי שמוצג להלן.

# yum install links

OR

# yum install lynx

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

[root@tecmint ~]# links http://serveripaddress/server-status
OR
[root@tecmint ~]# lynx http://serveripaddress/server-status
OR
[root@tecmint ~]#  /etc/init.d/httpd fullstatus
                     Apache Server Status for localhost
   Server Version: Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3
   Server Built: Aug 13 2013 17:29:28

   --------------------------------------------------------------------------
   Current Time: Tuesday, 14-Jan-2014 04:34:13 EST
   Restart Time: Tuesday, 14-Jan-2014 00:33:05 EST
   Parent Server Generation: 0
   Server uptime: 4 hours 1 minute 7 seconds
   Total accesses: 2748 - Total Traffic: 9.6 MB
   CPU Usage: u.9 s1.06 cu0 cs0 - .0135% CPU load
   .19 requests/sec - 695 B/second - 3658 B/request
   1 requests currently being processed, 4 idle workers
 .__.__W...

   Scoreboard Key:
   "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
   "C" Closing connection, "L" Logging, "G" Gracefully finishing,
   "I" Idle cleanup of a worker, "." Open slot with no current process

Srv PID     Acc    M CPU   SS  Req Conn Child Slot     Client        VHost             Request
0-0 -    0/0/428   . 0.30 5572 0   0.0  0.00  1.34 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0
                                                                               GET
1-0 5606 0/639/639 _ 0.46 4    0   0.0  2.18  2.18 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
                                                                               GET
2-0 5607 0/603/603 _ 0.43 0    0   0.0  2.09  2.09 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
3-0 -    0/0/337   . 0.23 5573 0   0.0  0.00  1.09 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0
                                                                               GET
4-0 5701 0/317/317 _ 0.23 9    0   0.0  1.21  1.21 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
                                                                               GET
5-0 5708 0/212/213 _ 0.15 6    0   0.0  0.85  0.85 115.113.134.14 5.175.142.66 /server-status?refresh=5
                                                                               HTTP/1.1
6-0 5709 0/210/210 W 0.16 0    0   0.0  0.84  0.84 127.0.0.1      5.175.142.66 GET /server-status
                                                                               HTTP/1.1
7-0 -    0/0/1     . 0.00 5574 0   0.0  0.00  0.00 127.0.0.1      5.175.142.66 OPTIONS * HTTP/1.0

   --------------------------------------------------------------------------

    Srv  Child Server number - generation
    PID  OS process ID
    Acc  Number of accesses this connection / this child / this slot
     M   Mode of operation
    CPU  CPU usage, number of seconds
    SS   Seconds since the beginning of the most recent request
    Req  Milliseconds required to process most recent request
   Conn  Kilobytes transferred this connection
   Child Megabytes transferred this child
   Slot  Total megabytes transferred this slot
   --------------------------------------------------------------------------

    Apache/2.2.15 (CentOS) Server at localhost Port 80

מסקנה

המודול mod_status של Apache הוא כלי ניטור מאוד שימושי למעקב אחר ביצועי שרת אינטרנט ויכול להדגיש בעצמו בעיות. למידע נוסף קרא את עמוד המצב שיכול לעזור לך להפוך למנהל שרת אינטרנט מוצלח יותר.

  1. דף הבית של Apache mod_status

זהו הכל לגבי mod_status לעכשיו, נחזור עם עוד טיפים ותחביבים על Apache בהדרכות עתידיות. עד אז נשארו גיקים והישארו מחוברים ל־Tecmint.com ואל תשכחו להוסיף את ההערות היקרות שלכם.

Source:
https://www.tecmint.com/monitor-apache-web-server-load-and-page-statistics/