MuninノードでApache_
プラグインを有効にしました:ln -sv /usr/share/munin/plugins/Apache_* /etc/munin/plugins/
service munin-node restart
でノードを再起動すると、次のエラーが発生します。
$ munin-node-configure --suggest 2>/dev/null | grep "Apache\|Plugin\|------"
Plugin | Used | Suggestions
------ | ---- | -----------
Apache_accesses | yes | no [Apache server-status not found. check if mod_status is enabled]
Apache_processes | yes | no [Apache server-status not found. check if mod_status is enabled]
Apache_volume | yes | no [Apache server-status not found. check if mod_status is enabled]
ただし、mod_status
はすでに有効になっています。
$ a2enmod status
Module status already enabled
Apacheを再起動しても違いはありません。
プラグインを手動で実行しようとすると、ここに表示されます(Uを取得することは悪いニュースであり、少なくとも一貫していると読みました)。
$ munin-run Apache_accesses --debug
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Set /rgid/ruid/egid/euid/ to /110/65534/110 110 /65534/
# Setting up environment
# About to run '/etc/munin/plugins/Apache_accesses'
accesses80.value U
$ munin-run Apache_processes --debug
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Set /rgid/ruid/egid/euid/ to /110/65534/110 110 /65534/
# Setting up environment
# About to run '/etc/munin/plugins/Apache_processes'
busy80.value U
idle80.value U
free80.value U
$ munin-run Apache_volume --debug
# Processing plugin configuration from /etc/munin/plugin-conf.d/munin-node
# Set /rgid/ruid/egid/euid/ to /110/65534/110 110 /65534/
# Setting up environment
# About to run '/etc/munin/plugins/Apache_volume'
volume80.value U
server-status not found
メッセージが引き続き表示される理由と、それを取り除く方法を誰かが知っていますか?
更新された回答1
Shaneの提案は、ApacheサイトでLocation
とSetHandler
を使用してリクエストハンドラーを設定することに関しては正しかった。 mod_status
の詳細については、 このページを参照してください
munin
が/var/log/Apache2/access.log
を取得している場所を確認することで、適切なリクエストが効果的に行われていることを確認できました。
127.0.0.1 - - [10/Nov/2011:07:24:15 +0000] "GET /server-status?auto HTTP/1.1" 404 7774 "-" "libwww-Perl/5.834
私の場合、Location
を設定するだけでは不十分で、Drupal
サイトを実行しており、.htaccess
とmod_rewrite
を組み合わせてリクエストを書き換えていました。それを修正するには、.htaccess
に次の行を追加する必要がありました。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteCond %{REQUEST_URI} !=/server-status # <= added this line
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
Apacheサイトでは/server-status
へのアクセスが127.0.0.1
に制限されているため、これはセキュリティ上の問題を表すものではないことに注意してください。
更新された回答2
これは/etc/Apache2/mods-enabled/status.conf
で既に定義されているため、ApacheサイトにLocation
を追加する必要はないようです。ところで、ExtendedStatus On
ディレクティブを追加したい場合は、そのファイル内で実行する必要があります。
実際にステータスモジュールにリクエストを送信しようとしているようです。 VirtualHost
のステータスの場所に適切な設定がありますか?このようなもの:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
走れるとわかった
$ wget http://localhost/server-status?auto
だがしかし
$ wget http://127.0.0.1/server-status?auto
1つ目はデフォルトサーバーにヒットし、2つ目は仮想サーバーにヒットします。
だから私は明示的に/etc/munin/plugin-conf.d/munin-node
にApacheセクションを追加しました
[Apache_*]
env.url http://localhost:%d/server-status?auto
env.ports 80
私のmunin Apacheグラフを手に入れました。
Many Ayromlouから解決策を見つけた このサイトで :
問題は、wordpressのこれらの.htaccessルールが、Apacheの設定でアクティブ化されたserver-infoとserver-statusのURLを引き継ぎ、「ページが見つかりません」というエラーを返すことです。私は、のようなルール:
RewriteCond %{REQUEST_URI} !=/server-status
これは私にはうまくいきませんでした。 wordpress(私が使用している)のマルチサイトバージョンがこれを引き起こしているかどうかはわかりません。問題なく動作したルールは次のとおりです。
RewriteRule ^(server-info|server-status) - [L]
このルールは、server-infoまたはserver-statusがURLの一部として解析されるたびに、書き換えエンジンを停止します。
apache Webサーバーに組み込まれたmod_statusは、Webブラウザーからサーバーのステータスを取得します。このモジュールを使用すると、サーバーのパフォーマンスを簡単に確認できます。すべてのレポートはHTML形式で生成されます。
ステップ1。ステータスモジュールが有効かどうかを確認するApache2ctl -Mまたはls/etc/Apache2/sites-enabled
ステップ2。有効になっていない場合は、コマンドで有効にします。
Sudo a2enmodステータス
ステップ3。アクセスを構成し、
/etc/Apache2/mods-enabled/status.confを開き、行にコメントを付けます。
#<Location /server-status>
# SetHandler server-status
# Require local
#Require ip 192.0.2.0/24
#</Location>
次の行を追加します。
<Location /server-status>
SetHandler server-status
Order deny,allow
Allow from all
</Location>
Allow from allの代わりに、Allow from our_public_ipaddressを編集することにより、この構成で特定のIPのサーバーステータスへのアクセスを制限できます。
Status.confファイルを保存します。
ステップ4。コマンドでApacheを再起動し、
/etc/init.d/Apache2 restart
ステップ5。ブラウザでサーバーのステータスページを確認する
http:// server-ip/server-status
これがお役に立てば幸いです。
私は同じ問題を抱えていました。さらに診断ステップがあります。やってみる
munin-run Apache_processes autoconf
これは、同じエラーを表示するより直接的な方法です "no(no Apache server-status on ports 80)"
今やってみてください
wget http://127.0.0.1/server-status?auto
私にとっては403 Forbiddenです。
また、メインのApacheエラーログに'client denied by server configuration:/ var/www/server-status'が表示されていました
あなたは同じですか?
実際私にとっては、シェーン・マッデンの答えがそれを解決しました。
/ server-statusが127.0.0.1からのみ禁止されている場合は、次の内容で127.0.0.1のVirtualHost構成を作成できます。
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName 127.0.0.1
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www>
Options +FollowSymLinks
AllowOverride None
order allow,deny
allow from all
</Directory>
</VirtualHost>
こちら より詳細な説明