web-dev-qa-db-ja.com

Apacheサーバーステータスが見つかりません。 mod_statusが有効かどうかを確認します

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サイトでLocationSetHandlerを使用してリクエストハンドラーを設定することに関しては正しかった。 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サイトを実行しており、.htaccessmod_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ディレクティブを追加したい場合は、そのファイル内で実行する必要があります。

8
Max

実際にステータスモジュールにリクエストを送信しようとしているようです。 VirtualHostのステータスの場所に適切な設定がありますか?このようなもの:

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

走れるとわかった

$ 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グラフを手に入れました。

3
Marji

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の一部として解析されるたびに、書き換えエンジンを停止します。

2
janfai

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

これがお役に立てば幸いです。

1
Amol

私は同じ問題を抱えていました。さらに診断ステップがあります。やってみる

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'が表示されていました

あなたは同じですか?

実際私にとっては、シェーン・マッデンの答えがそれを解決しました。

0
Harry Wood

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

こちら より詳細な説明

0
druss