Webmin/Virtualminの助けを借りてセットアップされた基本的なLAMPで、Apacheを使用して非常に多くの仮想ホストをホストしています。現在の接続を監視できるトップライクなツールを探しています。ここで、仮想ホスティングの部分が問題を引き起こしているようです。私が試したものは次のとおりです。
netstat
-接続は表示できますが、すべてプライマリドメインを使用しているかのように表示されます。 mydomain.com:www
。iftop
-とても気に入っていますが、netstat
と同様の欠点があります:仮想ホストを表示しません。apachetop
-すべての仮想ホストの情報が表示されていないようです。個別のカスタムログファイルにログを記録していますが、それが機能しない理由の原因だと考えています。ntop
、darkstat
、MRTG
、bwm-ng
、IPTraf
-どちらも機能していません。したがって、基本的に、netstat
の現在の出力に似たものを探していますが、要求の対象となる仮想ホストを含めるには、たとえば:avirtualsite.com:www
を探します。
Andrea Corbelliniの回答 は、使用しているツールで動作しない理由と、仮想ホスティングの仕組みを説明しています。これが、Apacheで実現する最も簡単な方法です...
mod_status
がお手伝いします。免責事項:これがWebminでどのように行われるかわかりません-裸の構成ファイルを使用してサーバーをセットアップします。手順の基本的な概要を次に示します。
これはtop
に似たツールですが、Webページとして表されます。 Apacheから直接クエリされた現在の状態を一覧表示するため、apachetop
のようにログファイルの解析に依存しません。
mod_status
を有効にします:
Sudo a2enmod status
自分にアクセスを許可します。
/etc/Apache2/mods-enabled/status.conf
を開いて編集します。ExtendedStatus
をOn
に設定します(オプションですが、より素晴らしいもので、少し遅いです)<Location /server-status>
内で、appendIPアドレスをAllow
ディレクティブのある行に追加します。例:
Allow from 127.0.0.1 ::1 66.77.88.99
Apacheを再起動します。
Sudo service Apache2 restart
ブラウザでツールをお楽しみください。例:http://1.2.3.4/server-status
この例のスクリーンショット のようになります。
押し続ける F5 更新を取得します。または、素晴らしいブラウザプラグインを入手して、更新されるのを見てください!
将来の訪問者のためのOPによる補遺
Webminでは、Statusモジュールに関する基本的な手順は次の場所にあります。
あなたが試みているすべてのツールがあなたに正しい答えを与えることは決してありません。その理由は、接続が確立されると、要求している情報が失われるためです。
例を使用してみましょう:Webサーバーに1つのIPアドレス(1.2.3.4)と2つのホスト名(a.mydomain.comおよびb.mydomain .com)そのIPアドレスに解決されます。
a.mydomain.comにアクセスしたときに、お気に入りのWebブラウザーを使用するとどうなりますか?
netstat
&co。 1.2.3.4への着信接続があることだけを知っています。 IPアドレスの代わりにホスト名が表示される理由は、IPアドレスにrDNSレコードがあるため、netstat
はIPの代わりにそれを表示することを好むからです。 netstat -n
を試す(またはrDNSレコードを削除する)と、IPアドレスが表示されます。
しかし、それだけではありません。接続を確立するために使用されたホスト名に関する情報が失われたと言ったとき、私は完全に正しくありませんでした。 TCP/IPスタックの観点から見ると、その文は真実です。しかし、HTTPプロトコルの観点から物事を見ると、物事は異なります。すべてのHTTPリクエストには、ブラウザーがリクエストを行うために使用したホスト名を含むHost:
ヘッダーがあります。
したがって、要するに、Webサーバーのログファイルを確認する必要があります。 Webサーバーは、HTTP要求を処理するサービスであるため、「元の」ホスト名を認識する唯一のサービスです。
別の方法は、入力することです
tail -f /var/log/Apache2/access.log
あなたの端末で
このbashを使用して、ポート80に接続されているすべてのIPを確認できます。
netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head
注:他のポートを表示する場合は、80を変更します
出力:
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
これは次の方法で確認できます。
netstat -na | grep 'ESTA'
Pid、user、およびcommandが必要な場合:
lsof -i tcp:443,80 | egrep 'PID|->' | sort -k9
GoAccess をインタラクティブに使用して、現在の訪問者を表示することもできます。この目的でApacheアクセスログを解析し、サイトに関する多くの統計を表示します。