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


9

apache_muninノードでプラグインを有効にしました:
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

私の場合LocationDrupalサイトを実行していて、を.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を更新

Locationこれはすでにで定義されているため、apacheサイトにを追加する必要はないようです/etc/apache2/mods-enabled/status.conf。ところで、ExtendedStatus Onディレクティブを追加したい場合は、そのファイル内で実行する必要があります。

回答:


5

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

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

確かに有効な点ですが、私の場合、私もいくつかのmod_rewrite作業を行う必要がありました(回答付きの更新された質問を参照)
最大

3

走れるとわかった

$ wget http://localhost/server-status?auto

だがしかし

$ wget http://127.0.0.1/server-status?auto

1つ目はデフォルトサーバーにヒットし、2つ目は仮想サーバーにヒットします。

だから私は明示的にApacheセクションを追加しました /etc/munin/plugin-conf.d/munin-node

[apache_*]
env.url   http://localhost:%d/server-status?auto
env.ports 80

私のmunin apacheグラフを取得しました。


2

はこのサイトで多くのAyromlouからの解決策を見つけました:

問題は、ワードプレスのこれらの.htaccessルールが、Apacheの設定でアクティブ化されたサーバー情報とサーバーステータスのURLを引き継ぎ、ページが見つからないというエラーを返すことです。次のようなルールの追加を提案する多数のサイトに出くわしました。

  RewriteCond %{REQUEST_URI} !=/server-status

これは私にはうまくいきませんでした。私が使用しているワードプレスのマルチサイトバージョンがこれを引き起こしているかどうかはわかりません。美しく機能したルールは次のとおりです。

  RewriteRule ^(server-info|server-status) - [L]

このルールは、server-infoまたはserver-statusがURLの一部として解析されるたびに、書き換えエンジンを停止します。


1

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

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


0

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

munin-run apache_processes autoconf

これは、同じエラーを表示するより直接的な方法です。「いいえ(ポート80にApacheサーバーのステータスがない)

今やってみてください

wget http://127.0.0.1/server-status?auto

私にとってそれは403 Forbiddenを与えています。

また、私は見ていた:「は/ var / www /のサーバのステータス、クライアントがサーバの設定によって拒否された」私のメインのApacheのエラーログに

あなたは同じですか?

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


こんにちはハリー、同じ問題が発生している場合は、質問に投票してください。回答が得られる可能性が高くなります。
最大

投票するのに十分な評判があるとすぐに、そうします:-)
Harry Wood

0

/ server-statusが127.0.0.1からのみ禁止されている場合は、次の内容で127.0.0.1のVirtualHost構成を作成できます。

<VirtualHost *:80>
    ServerAdmin superadmin@somemail.com
    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>

詳細はこちら

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.