Apache web sunucumdaki mevcut bağlantıları nasıl izleyebilirim?


37

Apache kullanarak Webmin / Virtualmin'in yardımıyla temel bir LAMP'ta epeyce sanal konak barındırıyorum. Mevcut bağlantıları izleyebileceğim en üste benzeyen bir araç arıyorum. Sanal barındırma kısmı burada beni rahatsız ediyor gibi görünüyor. İşte denedim:

  • netstat- Bağlantıları görebiliyorum ama sanki hepsi birincil alanımı kullanıyormuş gibi gösteriyorlar mydomain.com:www.
  • iftop- Bundan çok hoşlanıyorum, ancak aşağıdakine benzer netstat: sanal ana bilgisayarı göstermiyor.
  • apachetop- tüm sanal konaklarım için bilgi göstermiyor gibi görünüyor. Özel günlük dosyalarını ayırmak için giriş yapıyorum, bunun neden işe yaramadığının sebebi olduğundan şüpheleniyorum.
  • ntop, darkstat, MRTG, bwm-ng, IPTraf- ya çalışmıyor.

Yani, temelde, mevcut çıkışına benzer bir şey arıyorum netstat, fakat bu talep örn içindir sanal konak dahil etmek: avirtualsite.com:www.


VirtualMin / Webmin ile kullanmak için Apache2 - Default LAMP kurulumunu kullanıyorum - Yeni buldum apachetop- ama sadece sağladığım dosyayı izler .. kahretsin- tüm sunucular değil ...
Piotr Kula

Yanıtlar:


35

Andrea Corbellini'nin cevabı , neden kullandığınız araçlarla çalışmadığını ve Sanal Hosting'in nasıl çalıştığını açıklıyor. İşte Apache'de yapmayı düşünmenin en basit yolu ...

mod_status sana yardım edeceğim.

Feragatname: Bunun Webmin'de nasıl yapıldığını anlayamıyorum - Sunucuları ayarlamak için çıplak yapılandırma dosyaları kullanıyorum. İşte adımların sadece temel bir bakış.

Bir topbenzeri bir araç, ancak bir web sayfası olarak temsil edilir. Doğrudan Apache'den sorgulanan mevcut durumu listeler, bu nedenle günlük dosyaları gibi ayrıştırmaya bağlı değildir apachetop.

  1. Etkinleştir mod_status:

    sudo a2enmod status
    
  2. Kendine erişim ver.

    • /etc/apache2/mods-enabled/status.confve düzenle:
    • Set ExtendedStatusiçin On(isteğe bağlı ancak daha harika özellikler ve daha yavaş biraz)
    • İçinde <Location /server-status>, ekleme doğrultusunda IP adresinizi Allowdirektifi. Örnek:

      Allow from 127.0.0.1 ::1 66.77.88.99
      
  3. Apache'yi yeniden başlatın:

    sudo service apache2 restart
    
  4. Örneğin, tarayıcınızda aracın tadını çıkarın: http://1.2.3.4/server-status

    Bu örnek ekran görüntüsü gibi görünecek .

  5. F5Güncellemeleri almak için basmaya devam edin . Ya da harika bir tarayıcı eklentisi edinin ve güncellenmesini izleyin!


Webmin'de

OP tarafından gelecek ziyaretçiler için ek

Webmin'de, Durum modülü ile ilgili temel adımlar burada bulunabilir:

  • Sunucular -> Apache Web Sunucusu -> Apache Modüllerini Yapılandırma
  • Durum modülünü seçin ve Seçili Modülleri Etkinleştir'e tıklayın.

görüntü tanımını buraya girin


ilginç - ama 100 sanal web sitem varsa - bana TÜM web siteleri için istatistikler gösterecek mi? /var/log/apache2/access.log adresindeki coonection günlüğü boş olduğundan, varsayılan web sitesini kullanmadığımız için her web sitesinin kendi /log/access.log dosyası bulunur
Piotr Kula

2
Şimdi senden çok hoşlanıyorum Bir öpücük ver: * +1
Piotr Kula

Deha- Bu benim ihtiyacım olan şeydi. şimdi bana vhost gösteriyor! Teşekkürler bir milyon adam! Bilgin için nasıl ödeme yapacağımı bilmiyorum!
Piotr Kula

Ciddi anlamda! Bu durum aracını çok seviyorum! Bu sayede çok fazla senaryo tespit ettim. Siteleri yamalı, yükseltilmiş ve düzeltilmiş hale getirmeme yardımcı oldu. Yardımlarınız çok takdir, keşke size tüm temsilcilerimi verebilseydim!
Piotr Kula

@ppumkin Lütfen abartmayın. Bu görevler için çok basit ve yaygın bir Apache modülü. Apache hakkında kendine saygı gösteren herhangi bir kitap bundan bahsedecektir. Yine de bu konuda yardımcı olduğuma sevindim.
gertvdijk

15

Çalıştığınız tüm araçlar size asla doğru cevabı vermeyecektir. Sebep, bağlantı yapıldığında talep ettiğiniz bilgilerin kaybolmasıdır.

Bir örnek kullanalım: web sunucunuzun bir IP adresine ( 1.2.3.4 ) ve bu IP adresine çözümlenen iki ana bilgisayar adına ( a.mydomain.com ve b.mydomain.com ) sahip olduğunu varsayalım .

Bir .alanalan.com adresini ziyaret ettiğinizde favori web tarayıcınızı kullandığınızda ne olur ?

  1. Tarayıcı, DNS sunucunuza IP adresini a.mydomain.com adresinin karşılık geldiğini sorar .
  2. DNS sunucusu, tarayıcıya adresin 1.2.3.4 olduğunu söyler .
  3. Web tarayıcısı 1.2.3.4'e bağlanır .

Öyleyse netstat& co. yalnızca 1.2.3.4 ile yapılan bir bağlantı olduğunu biliyorum . IP adresi yerine bir ana bilgisayar adı görmenizin nedeni, IP adresinin bir rDNS kaydına sahip olmasıdır, bu nedenle netstatIP yerine bunu göstermeyi tercih eder, çünkü bu daha iyidir. Deneyin netstat -n(veya rDNS kaydını kaldırın) ve IP adresini göreceksiniz.

Ancak hepsi bu kadar değil: bağlantıyı yapmak için kullanılan ana bilgisayar adı hakkındaki bilgilerin kaybolduğunu söylediğimde, tam olarak doğru değildim. TCP / IP yığınının bakış açısından, bu cümle doğrudur. Ancak, şeyleri HTTP protokolünün bakış açısından görürsek, her şey farklıdır. Her HTTP isteğinde Host:, isteği yapmak için tarayıcı tarafından kullanılan ana bilgisayar adını içeren bir başlık vardır.

Yani, kısacası, web sunucunuzun günlük dosyalarına bakmalısınız. Web sunucusu, HTTP isteklerini yerine getiren hizmet ve bu nedenle "orijinal" ana bilgisayar adını bilen tek hizmettir.


1
+1 Önemli ağ arka plan öyküleri yetersiz. Benim cevabımla bağlantılı olarak, bu da en fazla oyu hak ediyor!
gertvdijk

13

Başka bir yol yazmaktır

tail -f /var/log/apache2/access.log

terminalinde


2
Güzel ve basit; oldukça yalındır, teşekkürler!
Julian F. Weinert,

CPanel kurulumlarımda (CentOS makinelerde, ancak Ubuntu'daki cPanel'in muhtemelen aynı olduğunu düşünüyorum) access.logbunun tüm istekleri içermediğini fark ettim . Bunun yerine, /usr/local/apache/domlogs/istekleri virtualhost ile görmeye bakıyorum (SSL, SSL olmayan ve hatta FTP arasında bölünmüş halde). Ubuntu cPanel'de yol farklı olabilir.
Buttle Butkus

2
Bunu Google’dan buldum. Bu teknik, ihtiyaç duyduğunuz hariç CentOS 7'de çalışır/var/log/httpd/access_log
mwfearnley

7

Bu bash ile 80 numaralı bağlantı noktasına bağlı tüm ips'leri kontrol edebilirsiniz.

netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

Not: Başka bir bağlantı noktasını görmek istiyorsanız, 80

ÇIKTI:

 19 x.174.143.1
 13 x.175.135.1
  9 x.68.135.1
  8 x.144.87.1
  7 x.68.150.1
  6 x.92.4.1
  6 x.188.23.1
  5 x.190.164.1
  4 x.189.156.1


1

Pid istiyorsanız, kullanıcı ve komut:

lsof  -i  tcp:443,80 | egrep 'PID|->' | sort -k9

0

Mevcut ziyaretçilerinizi görüntülemek için GoAccess'i etkileşimli olarak da kullanabilirsiniz . Bu amaçla Apache erişim günlüğünüzü ayrıştırır ve sitenizle ilgili bir sürü istatistik gösterir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.