Da ich kürzlich ein Schnäppchen machen wollte, wechselte ich den Server zum Alibaba Cloud International Edition Hong Kong VPS-Host. Das größte Gefühl nach dem Umzug hierher ist nicht die Geschwindigkeitsverbesserung – denn der ursprünglich verwendete koreanische kdatacenter VPS ist auch beim Zugriff über das Telekommunikationsnetz sehr schnell – aber die Leistung des Alibaba Cloud VPS-Hosts ist im Vergleich zu anderen VPS-Hosts, die es auch sind, wirklich gut 1 GB. Es ist ein bisschen schwach.

Ich habe gerade ein Tool verwendet, um die Systemlast von Alibaba Cloud Hong Kong VPS zu scannen, und die Systemlast stieg ständig an. Manchmal stellte ich fest, dass ich es nicht öffnen konnte, als ich im Hintergrund einen Artikel schrieb. Ich habe das Serverprotokoll geöffnet und viele abnormale IP-Adressen gefunden, z. B. Port-Scans, SQL-Injection, „fehlende“ Website-Sicherungsdateien und AB-Stresstests ... Kurz gesagt, es gab viele abnormale IP-Adressen.

Das Analysieren des IP-Verhaltens in Protokollen ist eine ermüdende Aufgabe, insbesondere wenn die Protokolle Hunderte von MB überschreiten und es sehr langsam ist, sie als Textdateien zu öffnen. In diesem Artikel werden zwei hervorragende Tools zur Serverprotokollanalyse vorgestellt: ngxtop und GoAccess. ngxtop analysiert Nginx-Protokolldateien und zeigt sie in Echtzeit über eine Schnittstelle an, die dem Befehl top ähnelt.

ngxtop kann frühere Protokolldateien analysieren und auch Serverprotokolle in Echtzeit überwachen. Sie können im Port schnell die am häufigsten besuchten IP-Adressen, 403/500/404-Fehler, angeforderte Seitenrankings usw. herausfinden der Top-Befehl. ngxtop ist ein leichtes Tool, während GoAccess eher einem leistungsstarken Protokollstatistik-Tool ähnelt.

GoAccess ist nicht nur reich an Grafiken und Text, sondern auch schnell, mit einer Protokolldatensatz-Parsing-Geschwindigkeit von 8 W pro Sekunde, und WebSocket aktualisiert die Statistiken alle 10 Sekunden. GoAccess verfügt nicht nur über eine Befehlszeilenschnittstelle, sondern kann auch eine HTML-Webseite generieren, sodass Sie intuitiv die Anzahl der Besucher im Protokoll, angeforderte Dateien, 404- und andere Fehler, Benutzerstandort, Browser, Betriebssystem, Quell-URL usw. sehen können. HTTP-Statuscode usw. .

Tools zur Serverprotokollanalyse: ngxtop und GoAccess – Echtzeitüberwachung und visuelle Verwaltung, um die Ursache von Ausnahmen schnell zu finden

Kurz gesagt, ngxtop und GoAccess sind zwei leistungsstarke Tools zur Analyse von Serverprotokollen wie Apache und Nginx. Sobald Sie diese beiden Software beherrschen, können die „potenziell“ gefährlichen IPs für den Server aufgedeckt werden. Wenn Sie als Webmaster den Umgang mit einer weiteren Software erlernen, können Sie weitere Serverkosten einsparen, wie zum Beispiel:

  1. Verwenden Sie Huginn, um Aktualisierungen öffentlicher RSS- und WeChat-Konten von jeder Website zu erfassen – schaffen Sie eine zentrale Plattform zum Lesen von Informationen
  2. Linux VPS stellt Google Drive bereit und Dropbox realisiert die Synchronisierung und Sicherung von VPS-Hostdaten
  3. Drei kostenlose Tools, die Ihnen helfen, die Authentizität von VPS-Servern zu erkennen – VPS-Hostleistungs- und Geschwindigkeitstestmethoden

PS: Aktualisiert am 21. Oktober 2017, Freunde, die an der Verwendung von Alibaba Cloud Hong Kong VPS interessiert sind, können zuerst meine Rezension lesen: Alibaba Cloud International Version Hong Kong Computer Room Speed ​​​​and Performance Evaluation – Fast but Disk IO und Speicher Das ist der Engpass. Wenn Sie auch die Stabilität des VPS-Servernetzwerks überwachen möchten, können Sie dieses Tool verwenden: Installation und Konfiguration von Smokeping – ein kostenloses Open-Source-Tool zur Überwachung der Netzwerkleistung für die visuelle Master/Slave-Bereitstellung.

1. Installation und Verwendung von ngxtop

1.1  ngxtop-Installation

Projekthomepage:

  1. HTTPS://GitHub.com/Lebinhong/Das kleine Top

ngxtop eignet sich für Nginx-Serverprotokolle. ngxtop kann mit dem folgenden Befehl installiert werden:

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

pip install ngxtop

Oder Sie können es direkt von der Quelle installieren:

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-Nutzung

Die grundlegende Verwendung von ngxtop ist wie folgt:

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

Die Optionen haben die folgenden Parameter:

-l: Geben Sie den vollständigen Pfad der Protokolldatei an (Nginx oder Apache2).

-f: Protokollformat

–no-follow: Verarbeitet die aktuell geschriebene Protokolldatei, anstatt neu hinzugefügte Protokolle in Echtzeit zur Protokolldatei zu verarbeiten

-t: Aktualisierungshäufigkeit

-n: Zeilennummer anzeigen

-o : Sortierregel (Standard ist Zugriffsanzahl)

-a …, –a …: Füge Ausdrücke (im Allgemeinen Aggregatausdrücke wie Summe, Durchschnitt, Min, Max usw.) zur Ausgabe hinzu.

-v: Detaillierte Informationen ausgeben

-i: Nur Datensätze verarbeiten, die den Regeln entsprechen

-c <Datei> oder –config <Datei> gibt die Nginx-Konfigurationsdatei an und analysiert automatisch das Protokollformat

-i <Filterausdruck> oder –filter <Filterausdruck> Filter, die den Ausdruck erfüllen, werden verarbeitet

-p <Filterausdruck> oder –pre-filter <Filterausdruck> In-Filter-Ausdruck zur Überprüfung in der Voranalysephase.

Die Variablen von ngxtop sind: remote_addr, remote_user, time_local, request, request_path, status, body_bytes_sent, http_referer, http_user_agent. Es wird hauptsächlich zur Analyse der IP-Adresse, des Anforderungspfads, des HTTP-Status, des Referrs, des Benutzeragenten usw. verwendet.

1.3  ngxtop-Beispiel

Sie können ngxtop info verwenden, um die Protokolladresse des lokalen Servers und den Pfad der Konfigurationsdatei anzuzeigen. Es können jedoch nur einige Standardprotokolldateien angezeigt werden, und einige benutzerdefinierte Protokolldateien werden nicht angezeigt.

Finden Sie die zehn häufigsten Anforderungs-URLs für 404-Fehler heraus. Befehlscode:

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

Der Effekt ist wie folgt:

Finden Sie die zehn meistbesuchten IP-Adressen heraus. Befehlscode:

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

Der Effekt ist wie folgt:

Finden Sie die zehn wichtigsten IP-Adressen für den Datenverkehr heraus. Befehlscode:

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

Finden Sie Fehlercodes über 400 heraus und zeigen Sie Anforderung, Status und http_referer an. Befehlscode:

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

Finden Sie die 10 durchschnittlichen bytes_sent-Werte mit Statuscode 200 und request_path, beginnend mit wzfou. Befehlscode:

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

Mit den oben genannten Befehlen können Sie die IP-Adressen einiger abnormaler Anforderungen grundsätzlich schnell sperren. Standardmäßig zeigt ngxtop die ersten 10 Datensätze an. Sie können den Parameter –n xxx hinzufügen, um die angezeigte Anzahl zu steuern. Der Befehl lautet wie folgt:

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

ngxtop implementiert die Überwachung von Serverprotokollen. Um die Nginx-Protokollüberwachung in Echtzeit anzuzeigen, benötigen Sie lediglich den Parameter –no-follow. Der Befehl lautet wie folgt:

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

Der Effekt ist wie folgt:

2. Installation und Nutzung von GoAccess

2.1  GoAccess-Installation

Offizielle GoAccess-Website:

  1. HTTPS://go access.IO/

GoAccess unterstützt die Analyse von Serverprotokollen wie Apache, Nginx, Amazon S3, Elastic Load Balancing und CloudFront. Der Installationsbefehl lautet wie folgt:

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

Je nach Ihren eigenen Bedürfnissen können Sie die Konfigurationsmöglichkeiten bei der Installation von GoAccess anpassen. wie folgt:

--enable-debug Kompilieren Sie mit Debug-Flags und deaktivieren Sie Compiler-Optimierungen.
--enable-utf8 Unterstützung für breite Zeichen. Hängt vom Ncursesw-Modul ab.
--enable-geoip=<legacy|mmdb> Geolocation-Unterstützung. Hängt vom MaxMind GeoIP-Modul ab. Legacy wird die ursprüngliche GeoIP-Datenbank verwenden. mmdb verwendet die erweiterte GeoIP2-Datenbank.
--enable-tcb=<memhash|btree> Tokyo Cabinet -Speicherunterstützung. memhash wird die In-Memory-Hash-Datenbank von Tokyo Cabinet verwenden. btree wird die On-Disk-B+Tree-Datenbank von Tokyo Cabinet verwenden.
–disable-zlib Deaktiviert die Verwendung der Zlib-Komprimierung für B+Tree-Datenbanken.
--disable-bzip Deaktivieren Sie die Verwendung der bzip2-Komprimierung für B+Tree-Datenbanken.
--with-getline bewirkt, dass einen sich dynamisch erweiternden Zeilenpuffer zum Parsen vollständiger Zeilenanforderungen verwendet, andernfalls wird ein Puffer mit fester Größe (4096) verwendet.
--with-openssl Ermöglicht die Kommunikation zwischen GoAccess und seinem WebSocket-Server zur Unterstützung von OpenSSL.

2.2  GoAccess-Nutzung

Die GoAccess-Syntax lautet wie folgt:

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

Häufig verwendete Parameter werden wie folgt beschrieben:

-f –log-file=<Protokolldatei>

Geben Sie den Pfad zur Eingabeprotokolldatei an. Wenn in der Konfigurationsdatei eine Eingabedatei angegeben ist, hat diese Vorrang vor einer, die in der Befehlszeile über den Parameter -f angegeben wird.

-l –log-debug=<Dateiname>

Alle Debuginformationen an die angegebene Datei senden. Konfigurationsoptionen müssen angegeben werden --enable-debug

-p –config-file=<configfile>

Gibt an, dass eine benutzerdefinierte Konfigurationsdatei verwendet werden soll. Wenn dieser Parameter gesetzt ist, ist seine Priorität höher als die der globalen Konfigurationsdatei (falls vorhanden).

–invalid-requests=<Dateiname>

Protokollieren Sie ungültige Anfragen an die angegebene Datei.

--no-global-config

Deaktivieren Sie das Laden globaler Konfigurationsdateien. Mögliche Verzeichnisse sollten /usr/etc/, /etc/ oder /usr/local/etc/ sein, sofern nicht beim Ausführen von ./configure angegeben --sysconfdir=/dir.

-a –Agentenliste

Öffnen Sie die UserAgent-Liste. Wenn diese Option aktiviert ist, wird die Parsing-Geschwindigkeit verringert.

-d –mit-Ausgabe-Resolver

Aktivieren Sie die IP-Auflösung bei der Ausgabe von HTML- oder JSON-Berichten.

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

Schließen Sie eine IPv4- oder IPv6-Adresse aus. Verwenden Sie Connectors zur Darstellung von IP-Segmenten (Anfang-Ende).

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

HTTP-Anforderungsprotokollschalter. Es wird ein Anfragefeld erstellt, das das Anfrageprotokoll + die eigentliche Anfrage enthält.

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

Umschalten der HTTP-Anfragemethode. Es wird ein Anfragefeld erstellt, das die Anfragemethode + die eigentliche Anfrage enthält.

-o –output=<json|csv>

Leiten Sie die angegebene Datei zur Standardausgabe um und verwenden Sie das Suffix, um das Ausgabeformat zu bestimmen:

-q – keine Abfragezeichenfolge

Ignorieren Sie die angeforderte Abfragezeichenfolge. Das heißt: www.google.com/page.htm?query => www.google.com/page.htm
Hinweis: Durch das Entfernen der Abfragezeichenfolge wird der Speicherverbrauch erheblich reduziert, insbesondere bei Zeitstempelanfragen.

-r – No-Term-Resolver

Deaktivieren Sie die IP-Auflösung während der Terminalausgabe.

–444-as-404

Behandeln Sie den nicht standardmäßigen Status 444 als 404.

–4xx-bis-eindeutige-Anzahl

Addieren Sie die Anzahl der 4xx-Clientfehler zur Anzahl der einzelnen Besucher.

–all-statische-Dateien

Zählen Sie statische Dateien, die Abfragezeichenfolgen enthalten.

–date-spec=<Datum|Std>

Legen Sie das Datumsanzeigeformat fest. Eines ist das Standarddatumsformat (Standard) und das andere ist das Format mit an das Datum angehängten Stunden.
Nur im Gästepanel gültig. Nützlich für die stündliche Analyse von Besucherdaten. Beispiel für ein Anzeigeformat: 18/Dez/2010:19

--double-decode

Dekodieren Sie einen doppelt kodierten Wert. Einschließlich UserAgent, Request und Referer.

–enable-panel=<PANEL>

Öffnen Sie das angegebene Panel. Panelliste:

–hour-spec=<Stunde|min>

Legen Sie das Anzeigeformat der Uhrzeit fest. Eines ist das Standardzeitformat (Standard) und das andere ist das Format mit an die Uhrzeit angehängten Minuten (alle zehn Minuten).
wird für das Zeitverteilungspanel verwendet. Nützlich für die Analyse von Verkehrsspitzen während bestimmter Zeiträume.

–ignoriere-Crawler

Crawler ignorieren.

–ignore-panel=<PANEL>

Ignorieren Sie das angegebene Panel. Panelliste:

–ignore-referer=<Referer>

Ignorieren Sie die Statistikquelle. Platzhalter werden unterstützt. Beispiel: *.domain.com ww?.domain.*

–ignore-status=<STATUS>

Ignorieren Sie das Parsen oder zeigen Sie einen oder mehrere Statuscodes an. Wenn mehrere Statuscodes vorhanden sind, verwenden Sie diesen Parameter, um jeweils einen anzugeben.

–num-tests=<Nummer>

Legen Sie die Anzahl der Testzeilen fest, d. h. testen Sie das Zugriffsprotokoll mit dem angegebenen Protokoll-/Datums-/Uhrzeitformat. Der Standardwert beträgt 10 Zeilen. Bei der Einstellung 0 führt der Parser keine Tests durch und analysiert direkt die gesamte Datei. Wenn eine Zeile mit dem angegebenen Protokoll-/Datums-/Uhrzeitformat übereinstimmt, bevor Nummer erreicht wird, betrachtet der Parser die Protokolldatei als gültig, andernfalls gibt GoAccess EXIT_FAILURE zurück und zeigt relevante Fehlermeldungen an.

–Verarbeiten und Beenden

Analysieren Sie das Protokoll und geben Sie beim Beenden keine Daten aus. Wird hauptsächlich verwendet, wenn Sie nur Daten zur Festplattendatenbank hinzufügen möchten, ohne Berichte auszugeben.

–real-os

Zeigt den echten Betriebssystemnamen an. Zum Beispiel: Windows XP, Snow Leopard.

–sort-panel=<PANEL,FIELD,ORDER>

S sortiert die Platten beim Erstladen. Durch Kommas getrennte Sortieroptionen. Optionen verwenden das Format: PANEL, METRIC, ORDER

--static-file <Erweiterung>

Statisches Dateisuffix hinzufügen. Beispiel: .mp3. Bei Suffixnamen muss die Groß-/Kleinschreibung beachtet werden.

-g –std-geoip

Standard-GeoIP-Datenbank, geringer Speicherbedarf.

–geoip-database <geocityfile>

Legen Sie den GeoIP-Datenbankpfad fest. Zum Beispiel: GeoLiteCity.dat. Es muss lokal von maxmind.com heruntergeladen werden. Unterstützung ist sowohl für IPv4 als auch für IPv6 verfügbar. Hinweis: --geoip-city-data ist ein Alias ​​für --geoip-database.
Hinweis: Wenn Sie GeoIP2 verwenden, müssen Sie die Stadt-/Länderdatenbank von MaxMind herunterladen und über --geoip-database festlegen.

GoAccess-Protokollformat. GoAccess verfügt außerdem über einen Parameter zum Festlegen des Serverprotokollformats: –log-format <logformat>. Auf den -Parameter log-format folgt ein Leerzeichen oder Tabulatortrennzeichen (t), das zur Angabe des Protokollzeichenfolgenformats verwendet wird.

Wenn Sie den vordefinierten Protokollformatnamen in der Tabelle unten verwenden, kann dieser direkt als Variable im GoAccess-Protokoll-/Datums-/Uhrzeitformat verwendet werden.

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

2.3  So legen Sie das Protokollformat fest

Schauen Sie sich zunächst an, was Ihr log_format ist. Die log_format-Direktive lautet wie folgt:

Syntax: log_format name string …;
Standardwert: log_format kombiniert „…“;
Konfigurationsabschnitt: http

Name stellt den Formatnamen dar und Zeichenfolge stellt das entsprechende Format dar. log_format verfügt über ein standardmäßiges kombiniertes Protokollformat, das nicht festgelegt werden muss. Es entspricht dem kombinierten Protokollformat von Apache, wie unten gezeigt:

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

Natürlich können Sie auch die Informationen, die das Serverprotokoll zum Abrufen benötigt, entsprechend Ihren eigenen Anforderungen hinzufügen. Die folgenden Variablen sind im Protokollformat zulässig:

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 通用日志格式下的本地时间。

Das Folgende ist ein Beispiel für die Einstellung 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;
 }
 }
}

Dies ist die Entsprechung zwischen dem GoAccess-Protokollformat und dem Serverprotokollformat:

%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 请求所花费的时间,单位秒

%^ 忽略这一字段

Beispiel für eine GoAccess-Protokolländerung:

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';

Die Standardkonfigurationsdatei von GoAccess goaccess.conf wird im Pfad /usr/local/etc abgelegt. Das Standardformat ist: log-format %h %^[%d: %t %^] "%r" %s %b "%R" "%u". Beobachten Sie das obige Serverprotokollformat und stellen Sie fest, dass es mehr Antwortzeiten $request_time und Upstream-Antwortzeit $upstream_response_time gibt.

Wir können es wie folgt ändern:

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

Die letzten drei Elemente %^ %^ %T, %^ bedeutet ignorieren, %T bedeutet „Antwortzeit in Sekunden, auf Millisekunden genau“. Durch die Änderung des GoAccess-Formats entspricht es unserem Serverprotokollformat.

2.4  GoAccess-Beispiel

Wenn Ihr Server ein allgemeines Protokollformat, ein gemeinsames Protokollformat, einschließlich virtueller Host, W3C-Format und Amazon CloudFront (verteilter Download) usw. verwendet, besteht keine Notwendigkeit, das Protokollformat zu ändern, sondern es einfach direkt zu verwenden. Sowohl LNMP als auch Oneinstack verwenden das COMBINED-Format.

GoAccess analysiert den Log-Befehl im Terminal:

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

Im obigen Befehl gibt -f das zu analysierende Protokoll /Pfad/zu/Protokoll an; –log-format Protokollformat, LNMP-Standardformat ist: COMBINED. Der Effekt nach dem Laufen ist wie folgt:

Die Funktions-Hotkeys lauten wie folgt:

F1 oder h Haupthilfeseite.

F5Zeichnen Sie das Hauptfenster neu.

qBeenden Sie das Programm, das aktuelle Fenster oder das abgestürzte Modul.

o oder ENTER erweitert das ausgewählte Modul oder öffnet ein Fenster.

0-9 und Shift + 0 aktivieren das ausgewählte Modul.

jScrollen Sie im erweiterten Modul nach unten.

kScrollen Sie im erweiterten Modul nach oben.

cLegen Sie das Farbschema fest oder ändern Sie es.

^ fScrollen Sie im aktuellen Modul einen Bildschirm vorwärts.

^ bScrollen Sie im aktuellen Modul einen Bildschirm zurück.

TABModul umschalten (vorwärts).

SHIFT + TABModul wechseln (rückwärts).

s Sortiert die Optionen aktiver Module.

/ sucht in allen Modulen (unterstützt reguläre Ausdrücke).

nSuchen Sie den Ort, an dem das Ereignis als nächstes stattfinden wird.

gGehen Sie zur ersten Option oder zum oberen Bildschirmrand.

GZur letzten Option oder zum unteren Bildschirmrand wechseln.

Wenn Sie die zehn am häufigsten besuchten IP-Adressen anzeigen möchten, drücken Sie die Zifferntaste 5, um die Moduldetails zu öffnen. Wie nachfolgend dargestellt:

Mehrere andere digitale entsprechende Module sind wie folgt:

Drücken Sie 1, um das Ziel „Besuche pro Tag“ festzulegen.

Drücken Sie 2, um zu „Am häufigsten angeforderte URLs“ zu navigieren.

Drücken Sie 3, um zu „Am häufigsten angeforderte statische Dateien“ zu navigieren.

Drücken Sie 4, um zu „Am häufigsten angeforderte 404s“ zu navigieren.

Drücken Sie 5, um zu „Am häufigsten angeforderte Benutzer-IPs“ zu navigieren.

Drücken Sie 6, um zu „Betriebssystem des Benutzers“ zu navigieren.

Drücken Sie 7, um zu „Benutzerbrowser“ zu navigieren.

Drücken Sie 8, um zur stündlichen Statistik zu navigieren

GoAccess-Ausgabe. Der Befehl lautet wie folgt:

Generieren Sie einen HTML-Bericht:

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

Generieren Sie einen JSON-Bericht:

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

Generieren Sie eine CSV-Datei:

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

GGoAccess ist sehr flexibel und unterstützt Echtzeit-Analyse und -Filterung. Beispiel: Sie müssen Probleme schnell diagnostizieren, indem Sie Echtzeitprotokolle überwachen:

# tail -f access.log | goaccess -

Noch besser: Sie können tail -f auch verwenden, um mit einem Mustervergleichstool zu arbeiten, wie zum Beispiel: grep, awk, sed usw.

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

Oder Sie können die Datei bei geöffneter Pipe von Grund auf analysieren und gleichzeitig einen Filter anwenden:

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

Zum Beispiel:

Geben Sie GoAccess in HTML aus und greifen Sie dann mit einem Browser darauf zu. Sie können den folgenden Befehl verwenden:

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

Der Zugriff mit einem Browser hat folgende Auswirkungen (zum Vergrößern anklicken):

Die von GoAccess ausgegebenen Diagramme sind sehr schön und Sie können in den Diagrammen auch detaillierte Optionen anzeigen. Einzelheiten finden Sie auch in der Demo auf der offiziellen Website: https://rt.goaccess.io/

Geben Sie GoAccess in HTML aus und aktualisieren Sie es in Echtzeit. Der Befehl lautet wie folgt:

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

Das Obige zeigt, dass der Daemon nach dem Start von GoAccess Websocket verwendet, um standardmäßig Port 7890 abzuhören. Sie können die Portnummer über den Parameter --port angeben.

Denken Sie nach der Angabe der Portnummer daran, diese in Ihrer VPS-Firewall zu öffnen:

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

3. Zusammenfassung

ngxtop eignet sich für einfache Suchanforderungen, während GoAccess sich auf die Gesamtanalyse konzentriert und sogar als Statistik verwendet werden kann. Wenn Ihre Website SSL verwendet und GoAccess die HTML-Seite zur Echtzeitüberwachung ausgibt, denken Sie daran, ssl-cert und ssl- im Schlüssel der Konfigurationsdatei goaccess.conf zu konfigurieren Element.

Natürlich können wir crontab auch verwenden, um GoAccess regelmäßig aufzufordern, statistische HTML-Seiten zu generieren, was einer Online-Überwachung von Serverprotokollen in Echtzeit entspricht. Der Code lautet wie folgt (HtmL-Seite alle 5 Minuten generieren):

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

Für diejenigen, die nicht wissen, wie man das GoAccess-Protokollformat einstellt, können Sie direkt das Online-Konvertierungstool verwenden: https://github.com/stockrt/nginx2goaccess. Befehl:

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

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

Die Ausgabeergebnisse können direkt in den GoAccess-Protokollformateinstellungen verwendet werden:

- Generated goaccess config:

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

Hinterlasse eine Antwort