كيفية مراقبة حمل خادم الويب أباتشي وإحصائيات الصفحة

في هذه المقالة، ستتعلم كيفية مراقبة حمولة وطلبات خادم الويب Apache باستخدام وحدة mod_status في توزيعات Linux الخاصة بك مثل CentOS، RHEL، و Fedora.

ما هو mod_status؟

mod_status هو وحدة Apache تساعد في مراقبة حمولة خادم الويب واتصالات httpd الحالية بواجهة HTML يمكن الوصول إليها عبر متصفح الويب.

تعرض mod_status لـ Apache صفحة HTML عادية تحتوي على معلومات حول الإحصائيات الحالية لخادم الويب بما في ذلك:

  • العدد الإجمالي للطلبات الواردة
  • العدد الإجمالي للبايتات وعدادات الخادم
  • استخدام وحدة المعالجة المركزية لخادم الويب
  • حمولة الخادم
  • وقت تشغيل الخادم
  • المرور الإجمالي
  • العدد الإجمالي للعمال الخاليين
  • PIDs مع العملاء المعنيين والمزيد.

قام مشروع Apache الافتراضي بتمكين صفحة إحصائيات خادمهم للجمهور العام. للحصول على عرض توضيحي لصفحة حالة موقع الويب المزدحم، قم بزيارة:

بيئة الاختبار

لقد استخدمنا البيئة التالية للاختبار في هذه المقالة لاستكشاف المزيد حول mod_status مع بعض الأمثلة العملية ولقطات الشاشة.

  1. نظام التشغيل – CentOS 8/7
  2. التطبيق – خادم الويب Apache
  3. عنوان IP – 5.175.142.66
  4. مجلد المستندات الجذري – /var/www/html
  5. ملف تكوين Apache – /etc/httpd/conf/httpd.conf
  6. منفذ HTTP الافتراضي – 80 TCP
  7. اختبار إعدادات التكوين – httpd -t

الشروط الأساسية لهذا البرنامج التعليمي هي أن يكون لديك بالفعل معرفة حول كيفية تثبيت وتكوين خادم Apache الأساسي. إذا كنت لا تعرف كيفية إعداد 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

الآن ابحث مرة أخرى عن كلمة “الموقع” أو انتقل إلى الأسفل حتى تجد قسمًا لـ 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 /server-status>
   SetHandler server-status
   Order allow,deny
   Deny from all
   Allow from all 
</Location>

ملاحظة: التكوين المذكور أعلاه هو التكوين الافتراضي لموقع ويب Apache الافتراضي (موقع واحد). إذا كنت قد أنشأت أحد أو أكثر مضيفي Apache الافتراضيين، فلن يعمل التكوين المذكور أعلاه.

لذلك، بشكل أساسي، تحتاج إلى تعريف التكوين نفسه لكل مضيف افتراضي لأي نطاقات قمت بتكوينها في Apache. على سبيل المثال، سيبدو التكوين المضيف الافتراضي لـ 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>

تمكين ExtendedStatus

تضيف إعدادات “ExtendedStatus” مزيدًا من المعلومات إلى صفحة الإحصاءات مثل استخدام وحدة المعالجة المركزية، طلب في الثانية، المرور الكلي، إلخ. لتمكينها، قم بتحرير نفس ملف httpd.conf وابحث عن كلمة “موسع” وقم بإلغاء تعليق السطر وضبط الحالة “تشغيل” لتوجيه 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

تأكد الآن أنك قمت بتمكين وتكوين صفحة حالة خادم Apache بشكل صحيح. يمكنك أيضًا التحقق من الأخطاء في تكوين httpd.conf باستخدام الأمر التالي.

[root@tecmint ~]# httpd -t

Syntax 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 أو 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/