مؤخرًا، "رغبًا في" الحصول على صفقة، قمت بتغيير الخادم إلى مضيف Alibaba Cloud International Edition Hong Kong VPS. إن الشعور الأكبر بعد الانتقال إلى هنا ليس تحسين السرعة - لأن kdatacenter VPS الكوري المستخدم في الأصل هو أيضًا سريع جدًا عند الوصول إليه على شبكة الاتصالات - ولكن أداء مضيف Alibaba Cloud VPS جيد حقًا مقارنة بمضيفي VPS الآخرين الذين هم أيضًا 1 جيجا بايت وهو ضعيف بعض الشيء.

لقد استخدمت للتو أداة لفحص تحميل النظام لـ Alibaba Cloud Hong Kong VPS واستمر تحميل النظام في الارتفاع في بعض الأحيان، ووجدت أنني لا أستطيع فتحه عندما كنت أكتب مقالًا في الخلفية. لقد فتحت سجل الخادم ووجدت الكثير من عناوين IP غير الطبيعية، مثل فحص المنافذ، وحقن SQL، وملفات النسخ الاحتياطي لموقع الويب "المفقودة"، واختبار ضغط AB... باختصار، كان هناك العديد من سلوكيات الوصول البشري غير الطبيعية.

يعد تحليل سلوك IP في السجلات مهمة متعبة، خاصة عندما تتجاوز السجلات مئات ميغابايت، ويكون فتحها كملفات نصية بطيئًا جدًا. ستشارك هذه المقالة أداتين ممتازتين لتحليل سجل الخادم: ngxtop وGoAccess. يقوم ngxtop بتحليل ملفات سجل Nginx ويعرضها في الوقت الفعلي باستخدام واجهة مشابهة للأمر العلوي.

يمكن لـ ngxtop تحليل ملفات السجل السابقة، ويمكنه أيضًا مراقبة سجلات الخادم في الوقت الفعلي، ويمكنك العثور بسرعة على عناوين IP الأكثر زيارة في السجلات، وأخطاء 403/500/404، وتصنيفات الصفحات المطلوبة، وما إلى ذلك في المنفذ تمامًا مثل الاستخدام. الأمر العلوي. إن ngxtop هي أداة خفيفة الوزن، في حين أن GoAccess أشبه بأداة قوية لإحصائيات السجل.

GoAccess ليس غنيًا بالرسومات والنصوص فحسب، بل إنه سريع أيضًا، مع سرعة تحليل سجل تبلغ 8 وات في الثانية، ويقوم websocket بتحديث الإحصائيات كل 10 ثوانٍ. لا يحتوي GoAccess على واجهة سطر أوامر فحسب، بل يمكنه أيضًا إنشاء صفحة ويب بتنسيق Html، مما يسمح لك برؤية عدد الزوار في السجل والملفات المطلوبة والأخطاء 404 وغيرها من الأخطاء وموقع المستخدم والمتصفح ونظام التشغيل وعنوان URL المصدر، رمز حالة HTTP، وما إلى ذلك.

أدوات تحليل سجل الخادم: ngxtop وGoAccess - المراقبة في الوقت الفعلي والإدارة المرئية للعثور بسرعة على مصدر الاستثناءات

باختصار، يعد ngxtop وGoAccess أداتين قويتين لتحليل سجلات الخادم مثل Apache وNginx، بمجرد إتقان هذين البرنامجين، يمكن الكشف عن عناوين IP "المحتملة" للخادم. باعتبارك مشرف موقع، فإن تعلم كيفية استخدام برنامج آخر يعني أنه يمكنك توفير نفقات خادم أخرى، مثل:

  1. استخدم Huginn لالتقاط تحديثات الحساب العام لـ RSS وWeChat من أي موقع ويب - وقم بإنشاء منصة شاملة لقراءة المعلومات
  2. يقوم Linux VPS بتثبيت Google Drive وDropbox - ويحقق مزامنة بيانات مضيف VPS والنسخ الاحتياطي
  3. ثلاث أدوات مجانية لمساعدتك في اكتشاف صحة خوادم VPS - أداء مضيف VPS وطرق اختبار السرعة

ملاحظة: تم التحديث في 21 أكتوبر 2017، يمكن للأصدقاء المهتمين باستخدام Alibaba Cloud Hong Kong VPS قراءة تقييمي أولاً: إصدار Alibaba Cloud International Version Hong Kong Computer Room تقييم السرعة والأداء - سريع ولكن القرص الإدخال والإخراج والذاكرة إنه عنق الزجاجة. إذا كنت تريد أيضًا مراقبة استقرار شبكة خادم VPS، فيمكنك استخدام هذه الأداة: تثبيت وتكوين Smokeping - أداة مجانية لمراقبة أداء الشبكة مفتوحة المصدر للنشر المرئي الرئيسي/التابع.

1. تركيب واستخدام ngxtop

1.1  تثبيت ngxtop

الصفحة الرئيسية للمشروع:

  1. HTTPS://GitHub.com/Lebinhong/تلك القمة الصغيرة

ngxtop مناسب لسجلات خادم Nginx. يمكن تثبيت ngxtop باستخدام الأمر التالي:

Fedora:yum install python-pip
CentOS/RHEL需先安装EPEL,安装完后:yum install python-pip
Debian/Ubuntu:apt-get install python-pip

pip install ngxtop

أو يمكنك تثبيته مباشرة من المصدر:

wget https://github.com/lebinh/ngxtop/archive/master.zip -O ngxtop-master.zip
unzip ngxtop-master.zip
cd ngxtop-master
python setup.py install

1.2  استخدام ngxtop

الاستخدام الأساسي لـ ngxtop هو كما يلي:

gxtop [选项]
ngxtop [选项] (print|top|avg|sum) <变量>
ngxtop info

تحتوي الخيارات على المعلمات التالية:

-l : حدد المسار الكامل لملف السجل (Nginx أو Apache2)

-f : تنسيق السجل

–no-follow: معالجة ملف السجل المكتوب حاليًا بدلاً من معالجة السجلات المضافة حديثًا إلى ملف السجل في الوقت الفعلي

-t: تردد التحديث

-n: عرض رقم السطر

-o : قاعدة الفرز (الافتراضي هو عدد الوصول)

-a …, –a …: إضافة تعبيرات (تعبيرات مجمعة عمومًا مثل المجموع، والمتوسط، والحد الأدنى، والحد الأقصى، وما إلى ذلك) إلى الإخراج.

-v: إخراج معلومات مفصلة

-i: معالجة السجلات التي تطابق القواعد فقط

-c <file> أو –config <file> يحدد ملف تكوين nginx ويحلل تنسيق السجل تلقائيًا

-i <filter-expression> أو –filter <filter-expression> ستتم معالجة المرشحات التي تلبي التعبير

-p <filter-expression> أو -pre-filter <filter-expression> تعبير داخل المرشح للتحقق من مرحلة التحليل المسبق.

متغيرات ngxtop هي: remote_addr، وremote_user، وtime_local، وrequest، وrequest_path، وstatus، وbody_bytes_sent، وhttp_referer، وhttp_user_agent. يتم استخدامه بشكل أساسي لتحليل عنوان IP ومسار الطلب وحالة HTTP والمرجع وuser_agent وما إلى ذلك.

1.3  مثال ngxtop

يمكنك استخدام معلومات ngxtop لعرض عنوان سجل الخادم المحلي ومسار ملف التكوين، ومع ذلك، يمكنها فقط عرض بعض ملفات السجل الافتراضية، ولن يتم عرض بعض ملفات السجل المخصصة.

اكتشف أهم عشرة عناوين URL للطلبات المتعلقة بأخطاء 404. رمز الأمر:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow top request_path --filter 'status == 404'

التأثير هو كما يلي:

اكتشف عناوين IP العشرة الأكثر زيارة. رمز الأمر:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --group-by remote_addr

التأثير هو كما يلي:

اكتشف أهم عشرة عناوين IP لحركة المرور. رمز الأمر:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --order-by 'avg(bytes_sent) * count'

اكتشف رموز الخطأ التي تزيد عن 400 واعرض الطلب والحالة وhttp_referer. رمز الأمر:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow -i 'status >= 400' print request status http_referer

ابحث عن أعلى 10 قيم بايتات مرسلة برمز الحالة 200 ومسار الطلب الذي يبدأ بـ wzfou. رمز الأمر:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow avg bytes_sent --filter 'status == 200 and request_path.startswith("wzfou")'

من خلال الأوامر المذكورة أعلاه، يمكنك بشكل أساسي قفل عناوين IP لبعض الطلبات غير الطبيعية بسرعة. افتراضيًا، سيعرض ngxtop أول 10 سجلات. يمكنك إضافة المعلمة –n xxx للتحكم في الرقم المعروض. الأمر كما يلي:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --no-follow --group-by remote_addr -n 20

يقوم ngxtop بتنفيذ مراقبة سجلات الخادم. لعرض مراقبة سجل Nginx في الوقت الفعلي، تحتاج فقط إلى المعلمة –no-follow، ويكون الأمر كما يلي:

ngxtop -l /data/wwwlogs/wzfou.com_nginx.log --group-by remote_addr

التأثير هو كما يلي:

2. تثبيت واستخدام GoAccess

2.1  تثبيت GoAccess

الموقع الرسمي لجو أكسس:

  1. HTTPS://go access.IO/

يدعم GoAccess تحليل سجلات الخادم مثل Apache وNginx وAmazon S3 وElastic Load Balancing وCloudFront. أمر التثبيت كما يلي:

apt-get install libncursesw5-dev libgeoip-dev
wget http://tar.goaccess.io/goaccess-1.2.tar.gz
tar -xzvf goaccess-1.2.tar.gz
cd goaccess-1.2/
./configure --enable-utf8 --enable-geoip=legacy
make
make install

اعتمادًا على احتياجاتك الخاصة، يمكنك ضبط خيارات التكوين عند تثبيت GoAccess. على النحو التالي:

--enable-debug قم بالتجميع باستخدام إشارات التصحيح وإيقاف تشغيل تحسينات المترجم.
--enable-utf8 دعم واسع للأحرف. يعتمد على وحدة Ncursesw.
--enable-geoip=<legacy|mmdb> دعم تحديد الموقع الجغرافي. يعتمد على وحدة MaxMind GeoIP. سيستخدم Legacy قاعدة بيانات GeoIP الأصلية. سيستخدم mmdb قاعدة بيانات GeoIP2 المحسنة.
--enable-tcb=<memhash|btree> دعم تخزين خزانة طوكيو . سوف يستخدم memhash قاعدة بيانات التجزئة في الذاكرة الخاصة بـ Tokyo Cabinet. ستستخدم btree قاعدة بيانات B+Tree الموجودة على القرص في Tokyo Cabinet.
–disable-zlib تعطيل استخدام ضغط zlib في قواعد بيانات B+Tree.
--disable-bzip تعطيل استخدام ضغط bzip2 في قواعد بيانات B+Tree.
--with-getline يتسبب في استخدام مخزن مؤقت للخط ممتد ديناميكيًا لتحليل طلبات السطر الكامل، وإلا سيتم استخدام مخزن مؤقت بحجم ثابت (4096).
--with-openssl لتمكين الاتصال بين GoAccess وخادم WebSocket الخاص به لدعم OpenSSL.

2.2  استخدام GoAccess

بناء جملة GoAccess كما يلي:

goaccess [filename] [ options ... ] [-c][-M][-H][-q][-d][...]

يتم وصف المعلمات شائعة الاستخدام على النحو التالي:

-f –ملف السجل=<ملف السجل>

حدد المسار إلى ملف سجل الإدخال. إذا تم تحديد ملف إدخال في ملف التكوين، فستكون له الأولوية على الملف المحدد في سطر الأوامر عبر المعلمة -f.

-l –log-debug=<اسم الملف>

إرسال كافة معلومات التصحيح إلى الملف المحدد. يجب تحديد خيارات التكوين --enable-debug

-p –ملف التكوين=<ملف التكوين>

يحدد لاستخدام ملف التكوين المخصص. إذا تم تعيين هذه المعلمة، فستكون أولويتها أعلى من ملف التكوين العام (إن وجد).

– طلبات غير صالحة = <اسم الملف>

تسجيل الطلبات غير الصالحة إلى الملف المحدد.

--no-global-config

تعطيل تحميل ملفات التكوين العامة. يجب أن تكون الدلائل المحتملة /usr/etc/ أو /etc/ أو /usr/local/etc/، ما لم يتم تحديدها عند تشغيل ./configure --sysconfdir=/dir.

-أ -قائمة الوكلاء

افتح قائمة وكيل المستخدم. عند تشغيله، سيتم تقليل سرعة التحليل.

-د – مع محلل الإخراج

تمكين تحليل IP عند إخراج تقارير HTML أو JSON.

-e –exclude-ip <IP|IP-range>

استبعاد عنوان IPv4 أو IPv6. استخدم الموصلات لتمثيل مقاطع IP (البداية والنهاية).

-H –http-protocol=<yes|no>

تبديل بروتوكول طلب HTTP. سيتم إنشاء حقل طلب يحتوي على بروتوكول الطلب + الطلب الحقيقي.

-M –http-method=<yes|no>

تبديل طريقة طلب HTTP. سيتم إنشاء حقل طلب يحتوي على طريقة الطلب + الطلب الحقيقي.

-o –output=<json|csv>

أعد توجيه الملف المحدد إلى الإخراج القياسي، باستخدام اللاحقة لتحديد تنسيق الإخراج:

-q – لا سلسلة الاستعلام

تجاهل سلسلة الاستعلام المطلوبة. وهو: www.google.com/page.htm?query => www.google.com/page.htm
ملاحظة: ستؤدي إزالة سلسلة الاستعلام إلى تقليل استهلاك الذاكرة بشكل كبير، خاصة بالنسبة لطلبات الطابع الزمني.

-r – لا يوجد محلل المصطلح

تعطيل دقة IP أثناء الإخراج الطرفي.

–444-كما-404

تعامل مع الحالة غير القياسية 444 كـ 404.

-4xx إلى عدد فريد

أضف عدد أخطاء عميل 4xx إلى عدد الزوار الفريدين.

-جميع الملفات الثابتة

عد الملفات الثابتة التي تحتوي على سلاسل الاستعلام.

–مواصفات التاريخ=<التاريخ|ساعة>

قم بتعيين تنسيق عرض التاريخ، أحدهما هو تنسيق التاريخ القياسي (الافتراضي)، والآخر هو التنسيق مع الساعات الملحقة بالتاريخ.
صالحة فقط في لوحة الضيوف. مفيد لتحليل بيانات الزائر على مستوى الساعة. مثال على تنسيق العرض: 18/ديسمبر/2010:19

- فك التشفير المزدوج

فك تشفير قيمة مزدوجة التشفير. بما في ذلك وكيل المستخدم والطلب والمحيل.

–enable-panel=<PANEL>

افتح اللوحة المحددة. قائمة اللوحة:

–مواصفات الساعة=<ساعة|دقيقة>

قم بتعيين تنسيق عرض الوقت، أحدهما هو تنسيق الوقت القياسي (الافتراضي)، والآخر هو التنسيق مع الدقائق الملحقة بالوقت (كل عشر دقائق). يتم استخدام
في لوحة توزيع الوقت. مفيد لتحليل ارتفاع حركة المرور خلال فترات زمنية محددة.

-تجاهل الزواحف

تجاهل برامج الزحف.

–تجاهل اللوحة=<PANEL>

تجاهل اللوحة المحددة. قائمة اللوحة:

-تجاهل المرجع=<المرجع>

تجاهل مصدر الإحصائيات. يتم دعم أحرف البدل. على سبيل المثال: *.domain.com ww?.domain.*

–حالة التجاهل=<الحالة>

تجاهل التحليل أو اعرض واحدًا أو أكثر من رموز الحالة. إذا كان هناك رموز حالة متعددة، استخدم هذه المعلمة لتحديد رمز واحد في كل مرة.

–عدد الاختبارات=<رقم>

قم بتعيين عدد خطوط الاختبار، أي اختبار سجل الوصول باستخدام تنسيق السجل/التاريخ/الوقت المحدد. القيمة الافتراضية هي 10 أسطر. إذا تم تعيينه على 0، فلن يقوم المحلل اللغوي بأي اختبار وسيقوم بتحليل الملف بأكمله مباشرة. إذا كان هناك سطر يتطابق مع تنسيق السجل/التاريخ/الوقت المحدد قبل الوصول إلى الرقم، فسيعتبر المحلل أن ملف السجل صالحًا، وإلا فسيقوم GoAccess بإرجاع EXIT_FAILURE ويعرض رسائل الخطأ ذات الصلة.

-العملية والخروج

تحليل السجل وعدم إخراج البيانات عند الخروج. يُستخدم بشكل أساسي عندما تريد فقط إضافة البيانات إلى قاعدة بيانات القرص دون إخراج التقارير.

-نظام التشغيل الحقيقي

عرض اسم نظام التشغيل الحقيقي. على سبيل المثال: نظام التشغيل Windows XP، سنو ليوبارد.

–لوحة الفرز=<PANEL,FIELD,ORDER>

يقوم S بفرز الألواح أثناء التحميل الأولي. فرز الخيارات مفصولة بفواصل. تستخدم الخيارات التنسيق: PANEL، METRIC، ORDER

--ملف ثابت <امتداد>

إضافة لاحقة ملف ثابت. على سبيل المثال: .mp3. الأسماء اللاحقة حساسة لحالة الأحرف.

-g -std-geoip

قاعدة بيانات GeoIP القياسية، مساحة ذاكرة منخفضة.

-قاعدة بيانات Geoip <geocityfile>

قم بتعيين مسار قاعدة بيانات GeoIP. على سبيل المثال: GeoLiteCity.dat. يجب تنزيله محليًا من maxmind.com. يتوفر الدعم لكل من IPv4 وIPv6. ملاحظة: --geoip-city-data هو اسم مستعار لـ --geoip-database.
ملاحظة: إذا كنت تستخدم GeoIP2، فستحتاج إلى تنزيل قاعدة بيانات المدينة/البلد من MaxMind وتعيينها عبر --geoip-database.

تنسيق سجل GoAccess. يحتوي GoAccess أيضًا على معلمة تُستخدم لتعيين تنسيق سجل الخادم: –تنسيق السجل <logformat>. يتبع تنسيق سجل المعلمة حرف مسافة أو محدد علامة التبويب (t)، والذي يُستخدم لتحديد تنسيق سلسلة السجل.

إذا كنت تستخدم اسم تنسيق السجل المحدد مسبقًا في الجدول أدناه، فيمكن استخدامه مباشرة كمتغير في تنسيق السجل/التاريخ/الوقت في GoAccess.

COMBINED     | 联合日志格式
VCOMBINED    | 支持虚拟主机的联合日志格式
COMMON       | 通用日志格式
VCOMMON      | 支持虚拟主机的通用日志格式
W3C          | W3C 扩展日志格式
SQUID        | Native Squid 日志格式
CLOUDFRONT   | 亚马逊 CloudFront Web 分布式系统
CLOUDSTORAGE | 谷歌云存储
AWSELB       | 亚马逊弹性负载均衡
AWSS3        | 亚马逊简单存储服务 (S3)

2.3  كيفية ضبط تنسيق السجل

أولاً، ألقِ نظرة على ما هو log_format الخاص بك، توجيه log_format هو كما يلي:

بناء الجملة: سلسلة اسم log_format …;
القيمة الافتراضية: log_format مدمج “…”;
قسم التكوين: http

يمثل الاسم اسم التنسيق، وتمثل السلسلة التنسيق المكافئ. يحتوي log_format على تنسيق سجل مدمج افتراضي لا يحتاج إلى تعيين، وهو ما يعادل تنسيق السجل المدمج لـ Apache، كما هو موضح أدناه:

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

بالطبع، يمكنك أيضًا إضافة المعلومات التي يحتاج سجل الخادم للحصول عليها وفقًا لاحتياجاتك الخاصة. يُسمح بالمتغيرات التالية في تنسيق السجل:

remote_addr, $http_x_forwarded_for 记录客户端IP地址
remote_user 记录客户端用户名称
request 记录请求的URL和HTTP协议
status 记录请求状态
body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。
bytes_sent 发送给客户端的总字节数。
connection 连接的序列号。
connection_requests 当前通过一个连接获得的请求数量。
msec 日志写入时间。单位为秒,精度是毫秒。
pipe 如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
http_referer 记录从哪个页面链接访问过来的
http_user_agent 记录客户端浏览器相关信息
request_length 请求的长度(包括请求行,请求头和请求正文)。
request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
time_iso8601 ISO8601标准格式下的本地时间。
time_local 通用日志格式下的本地时间。

فيما يلي مثال لإعداد log_format:

http {
 log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                                        '"$status" $body_bytes_sent "$http_referer" '
                                        '"$http_user_agent" "$http_x_forwarded_for" '
                                        '"$gzip_ratio" $request_time $bytes_sent $request_length';
 
 log_format srcache_log '$remote_addr - $remote_user [$time_local] "$request" '
                                '"$status" $body_bytes_sent $request_time $bytes_sent $request_length '
                                '[$upstream_response_time] [$srcache_fetch_status] [$srcache_store_status] [$srcache_expire]';
 
 open_log_file_cache max=1000 inactive=60s;
 
 server {
 server_name ~^(www.)?(.+)$;
 access_log logs/$2-access.log main;
 error_log logs/$2-error.log;
 
 location /srcache {
 access_log logs/access-srcache.log srcache_log;
 }
 }
}

هذه هي المراسلات بين تنسيق سجل GoAccess وتنسيق سجل الخادم:

%t 匹配time-format格式的时间字段

%d 匹配date-format格式的日期字段

%h host(客户端ip地址,包括ipv4和ipv6)

%r 来自客户端的请求行

%m 请求的方法

%U URL路径

%H 请求协议

%s 服务器响应的状态码

%b 服务器返回的内容大小

%R HTTP请求头的referer字段

%u 用户代理的HTTP请求报头

%D 请求所花费的时间,单位微秒

%T 请求所花费的时间,单位秒

%^ 忽略这一字段

مثال لتعديل سجل GoAccess:

log_format access '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $http_x_forwarded_for $request_time $upstream_response_time';

يتم وضع ملف التكوين الافتراضي لـ GoAccess goaccess.conf في المسار /usr/local/etc والتنسيق الافتراضي هو: log-format %h %^[%d: %t %^] "%r" %s %b "%R" "%u". لاحظ تنسيق سجل الخادم أعلاه واكتشف أن هناك المزيد من أوقات الاستجابة $request_time ووقت الاستجابة المنبع $upstream_response_time.

يمكننا تعديله على النحو التالي:

原来:log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
修改:log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u" %^ %^ %T

العناصر الثلاثة الأخيرة %^ %^ %T، %^ تعني تجاهل، %T تعني "زمن الاستجابة بالثواني، بدقة بالمللي ثانية" . من خلال تعديل تنسيق GoAccess، فإنه يتوافق مع تنسيق سجل الخادم الخاص بنا.

2.4  مثال GoAccess

إذا كان الخادم الخاص بك يستخدم تنسيق سجل مشترك، وتنسيق سجل مشترك، بما في ذلك المضيف الظاهري، وتنسيق W3C وAmazon CloudFront (التنزيل الموزع)، وما إلى ذلك، ليست هناك حاجة لتعديل تنسيق السجل، فقط استخدمه مباشرة. يستخدم كل من LNMP وOneinstack التنسيق COMBINED.

يقوم GoAccess بتحليل أمر السجل في الجهاز:

goaccess -d -f /data/wwwlogs/wzfou.com_nginx.log --log-format=COMBINED

في الأمر أعلاه، يحدد -f السجل / المسار / إلى / السجل الذي سيتم تحليله؛ تنسيق سجل تنسيق السجل، التنسيق الافتراضي لـ LNMP هو: COMBINED. التأثير بعد التشغيل هو كما يلي:

مفاتيح التشغيل السريع هي كما يلي:

F1 أو h صفحة المساعدة الرئيسية.

F5أعد رسم النافذة الرئيسية.

qقم بإنهاء البرنامج أو النافذة الحالية أو الوحدة المعطلة.

يقوم o أو ENTER بتوسيع الوحدة المحددة أو فتح نافذة.

يقوم 0-9 وShift + 0 بتنشيط الوحدة المحددة.

jقم بالتمرير لأسفل في الوحدة الموسعة.

kقم بالتمرير لأعلى في الوحدة الموسعة.

cقم بتعيين نظام الألوان أو تغييره.

^ fقم بالتمرير للأمام بمقدار شاشة واحدة في الوحدة الحالية.

^ bقم بالتمرير للخلف بمقدار شاشة واحدة في الوحدة الحالية.

TABتبديل الوحدة (للأمام).

SHIFT + TABتبديل الوحدة (للخلف).

s يفرز خيارات الوحدات النشطة.

/ يبحث في جميع الوحدات (يدعم التعبيرات العادية).

nابحث عن الموقع الذي سيحدث فيه الحدث بعد ذلك.

gانتقل إلى الخيار الأول أو أعلى الشاشة.

Gانتقل إلى الخيار الأخير أو أسفل الشاشة.

إذا كنت تريد عرض عناوين IP العشرة الأكثر زيارة، فاضغط على المفتاح الرقمي 5 لفتح تفاصيل الوحدة. كما هو مبين أدناه:

العديد من الوحدات الرقمية المقابلة الأخرى هي كما يلي:

اضغط 1 لاستهداف "الزيارات في اليوم"

اضغط 2 للانتقال إلى "عناوين URL الأكثر طلبًا"

اضغط 3 للانتقال إلى "الملفات الثابتة الأكثر طلبًا"

اضغط 4 للانتقال إلى "رسائل 404 الأكثر طلبًا"

اضغط 5 للانتقال إلى "عناوين IP الأكثر طلبًا للمستخدم"

اضغط 6 للانتقال إلى "نظام التشغيل الخاص بالمستخدم"

اضغط 7 للانتقال إلى "متصفح المستخدم"

اضغط 8 للانتقال إلى الإحصائيات بالساعة

إخراج GoAccess. الأمر كما يلي:

إنشاء تقرير HTML:

# goaccess access.log -a -o report.html

إنشاء تقرير JSON:

# goaccess access.log -a -d -o report.json

إنشاء ملف CSV:

# goaccess access.log --no-csv-summary -o report.csv

يعد GGoAccess مرنًا جدًا ويدعم التحليل والتصفية في الوقت الفعلي. على سبيل المثال: تحتاج إلى تشخيص المشكلات بسرعة من خلال مراقبة السجلات في الوقت الفعلي:

# tail -f access.log | goaccess -

والأفضل من ذلك، يمكنك أيضًا استخدام tail -f للعمل مع أداة مطابقة الأنماط، مثل: grep، awk، sed، وما إلى ذلك.

# tail -f access.log | grep -i --line-buffered 'firefox' | goaccess --log-format=COMBINED -

أو يمكنك تحليل الملف من البداية مع فتح الأنبوب وتطبيق عامل التصفية في نفس الوقت:

# tail -f -n +0 access.log | grep --line-buffered 'Firefox' | goaccess -o out.html --real-time-html -

على سبيل المثال:

قم بإخراج GoAccess إلى Html ثم قم بالوصول إليه باستخدام المتصفح، يمكنك استخدام الأمر التالي:

goaccess -d -f /data/wwwlogs/wzfou.com_nginx.log --log-format=COMBINED -a > /data/wwwroot/howsvps.com/wzfou.html

تأثير الوصول إليه باستخدام المتصفح هو كما يلي (اضغط للتكبير):

تعد المخططات التي يتم إخراجها بواسطة GoAccess جميلة جدًا، ويمكنك أيضًا عرض الخيارات التفصيلية في المخططات. للحصول على التفاصيل، يمكنك أيضًا الاطلاع على العرض التوضيحي على الموقع الرسمي: https://rt.goaccess.io/

إخراج GoAccess إلى Html وتحديثه في الوقت الفعلي، الأمر كما يلي:

goaccess -d -f /data/wwwlogs/howsvps.com_nginx.log --log-format=COMBINED -a > /data/wwwroot/howsvps.com/wzfou.html --real-time-html --port=9870 --daemonize

يوضح ما سبق أنه بعد تشغيل البرنامج الخفي لـ GoAccess، فإنه يستخدم Websocket لإنشاء اتصال طويل ويستمع إلى المنفذ 7890 بشكل افتراضي. يمكنك تحديد رقم المنفذ من خلال المعلمة --port.

بعد تحديد رقم المنفذ، تذكر فتحه في جدار الحماية VPS الخاص بك:

iptables -A INPUT -p tcp -m tcp --dport 9870 -j ACCEPT

3. ملخص

يعد ngxtop مناسبًا لاحتياجات البحث البسيطة، بينما يركز GoAccess على التحليل الشامل ويمكن استخدامه أيضًا كإحصاءات. إذا كان موقع الويب الخاص بك يستخدم SSL، فعندما يقوم GoAccess بإخراج صفحة HTML للمراقبة في الوقت الفعلي، تذكر تكوين مفتاح ssl-cert وssl- في ملف التكوين goaccess.conf. العنصر.

بالطبع، يمكننا أيضًا استخدام crontab لمطالبة GoAccess بشكل دوري بإنشاء صفحات HTML إحصائية، وهو ما يعادل مراقبة سجلات الخادم عبر الإنترنت في الوقت الفعلي. الكود كما يلي (إنشاء صفحة HtmL كل 5 دقائق):

*/5 * * * * goaccess -d -f /data/wwwlogs/wzfou.com_nginx.log --log-format=COMBINED -a > /data/wwwroot/wzfou.com/wzfou.html

بالنسبة لأولئك الذين لا يعرفون كيفية تعيين تنسيق سجل GoAccess، يمكنك استخدام أداة التحويل عبر الإنترنت مباشرة : https://github.com/stockrt/nginx2goaccess. طلب:

用法: ./nginx2goaccess.sh '<log_format>'

./nginx2goaccess.sh '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'

يمكن استخدام نتائج الإخراج مباشرة في إعدادات تنسيق سجل GoAccess:

- Generated goaccess config:

time-format %T
date-format %d/%b/%Y
log_format %h - %^ [%d:%t %^] "%r" %s %b "%R" "%u"

اترك رد