Sådan overvåges Apache-webserverbelastning og sidestatistik


I denne artikel lærer du, hvordan du overvåger Apache-webserverbelastning og anmodninger ved hjælp af mod_status-modulet i dine Linux-distributioner som CentOS, RHEL og Fedora.

Hvad er mod_status?

mod_status er et Apache-modul, der hjælper med at overvåge webserverbelastning og aktuelle httpd-forbindelser med en HTML-grænseflade, der er tilgængelig via en webbrowser.

Apache's mod_status viser en almindelig HTML-side, der indeholder oplysninger om aktuelle statistikker for webserveren inklusive.

  • Samlet antal indgående anmodninger
  • Samlet antal bytes og antal servere
  • CPU-brug af webserver
  • Serverbelastning
  • Server oppetid
  • Samlet trafik
  • Samlet antal ledige medarbejdere
  • PID'er med de respektive klienter og mange flere.

Standard Apache Project aktiverede deres serverstatistikside for offentligheden. Besøg for at få en demo af det travle websteds statusside.

  • https://status.apache.org/

Vi har brugt følgende testmiljø til denne artikel til at udforske mere om mod_status med nogle praktiske eksempler og skærmbilleder.

  1. Operativsystem - CentOS 8/7
  2. Applikation - Apache-webserver
  3. IP-adresse - 5.175.142.66
  4. DocumentRoot -/var/www/html
  5. Apache-konfigurationsfil - /etc/httpd/conf/httpd.conf
  6. Standard HTTP-port - 80 TCP
  7. Test konfigurationsindstillinger - httpd -t

Forudsætningerne for denne tutorial er, at du allerede skal være opmærksom på, hvordan du installerer og konfigurerer en Basic Apache Server. Hvis du ikke ved, hvordan du konfigurerer Apache, skal du læse følgende artikel, der kan hjælpe dig med at konfigurere din egen Apache-webserver.

  1. Opret din egen webserver og hosting et websted i Linux

Sådan aktiveres mod_status i Apache

Standard Apache-installationen leveres med mod_status aktiveret. Hvis ikke, skal du sørge for at aktivere den i Apache-konfigurationsfilen.

 vi /etc/httpd/conf/httpd.conf

Søg efter ordet “mod_status”, eller bliv ved med at rulle ned, indtil du finder en linje, der indeholder.

#LoadModule status_module modules/mod_status.so

Hvis du ser et '#' tegn i begyndelsen af "LoadModule", betyder det, at mod_status er deaktiveret. Fjern '#' for at aktivere mod_status.

LoadModule status_module modules/mod_status.so

Søg igen efter ordet "Placering", eller rul ned, indtil du finder et afsnit for mod_status, der skal se ud som følger.

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

I ovenstående afsnit skal du fjerne kommentar til linjerne for placeringsdirektivet, SetHandler og katalogrestriktionerne i henhold til dine behov. For eksempel holder jeg det enkelt med ordren Tillad, benægt og det er tilladt for alle.

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

Bemærk: Ovenstående konfiguration er standardkonfigurationen for standard Apache-webstedet (enkelt websted). Hvis du har oprettet en eller flere Apache Virtual Hosts, fungerer ovenstående konfiguration ikke.

Så grundlæggende skal du definere den samme konfiguration for hver virtuel vært for alle domæner, du har konfigureret i Apache. For eksempel vil den virtuelle værtskonfiguration for mod_status se sådan ud.

<VirtualHost *:80>
    ServerAdmin [email 
    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” -indstillingerne tilføjer flere oplysninger til statistiksiden som CPU-brug, anmodning pr. Sekund, total trafik osv. For at aktivere det skal du redigere den samme httpd.conf-fil og søge efter ordet “Udvidet” og fjerne kommentar til linjen og indstille status “Til” for ExtendedStatus-direktivet.

# 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

Sørg nu for, at du har aktiveret og konfigureret Apache-server-status siden korrekt. Du kan også kontrollere for fejlene i httpd.conf-konfigurationen ved hjælp af følgende kommando.

 httpd -t

Syntax OK

Når først du får syntaksen er OK, kan du genstarte httpd-tjenesten.

 service httpd restart
OR
 systemctl restart httpd
Stopping httpd:                                          [  OK  ]
Starting httpd:                                          [  OK  ]

Apache-statussiden vil være tilgængelig via dit domænenavn med "/ server-status" på følgende URL'er.

http://serveripaddress/server-status

OR

http://serev-hostname/server-status

Du vil se noget svarende til den følgende side med ExtendedStatus aktiveret.

I ovenstående øjebliksbillede kan du se, at en HTML-grænseflade, der viser alle oplysninger om serverens oppetid, behandler Id med sin respektive klient, den side de prøver at få adgang til.

Det viser også betydningen og brugen af alle de forkortelser, der bruges til at vise status, som hjælper os med at forstå situationen bedre.

Du kan også opdatere siden hver gang sekunder (f.eks. 5 sekunder) for at se de opdaterede statistikker. For at indstille den automatiske opdatering skal du tilføje “? Refresh = N” i slutningen af URL'en. Hvor N kan erstattes med det antal sekunder, som din side skal opdateres.

http://serveripaddress/server-status/?refresh=5

Du kan også se Apache-statussiden fra kommandolinjegrænsefladen ved hjælp af de specielle kommandolinjebrowsere kaldet links eller lynx. Du kan installere dem ved hjælp af standardpakkehåndteringsværktøjet kaldet yum som vist nedenfor.

# yum install links

OR

# yum install lynx

Når du først har installeret, kan du få de samme statistikker på din terminal ved hjælp af følgende kommando.

 links http://serveripaddress/server-status
OR
 lynx http://serveripaddress/server-status
OR
  /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

Konklusion

Apache's mod_status-modul er et meget praktisk overvågningsværktøj til overvågning af ydeevnen for en webserveres aktivitet og kan selv fremhæve problemer. For mere information, læs statussiden, der kan hjælpe dig med at blive en mere succesrig webserveradministrator.

  1. Apache mod_status-startside

Det er alt for mod_status for nu, vi kommer med nogle flere tricks og tip om Apache i fremtidige tutorials. Indtil da forbliver Geeky og tunet til linux-console.net og glem ikke at tilføje dine værdifulde kommentarer.