LinuxでCollectd-webとApacheCGIを使用してサーバーリソースを監視する


このチュートリアルでは、Linuxボックスを監視するためにグラフィカルなhtml出力を生成するために、CollectdデーモンのフロントエンドWeb監視ツールであるCollectd-webインターフェイスをApacheCGIインターフェイスと組み合わせてインストールして実行する方法について説明します。

また、記事の最後に、.hpasswdApache認証メカニズムを使用してCollectd-webインターフェイスを保護する方法についても説明します。

この記事の要件は、LinuxシステムにCollectedおよびCollected-Webがインストールされている必要があるということです。これらのパッケージをインストールするには、このシリーズの前回の記事の手順1と2に従う必要があります。

  1. Install Collectd and Collectd-Web in Linux

上記のリンクから次の2つの手順のみに従ってください。

Step 1: Install Collectd Service 
Step 2: Install Collectd-Web and Dependencies 

これら2つの必要な作業が正常に完了したら、この記事の詳細な手順を続行して、ApacheCGIを使用してCollectd-webを構成できます。

ステップ1:ApacheWebサーバーをインストールする

1.システムにApacheWebサーバーが既にインストールされていると仮定します。インストールされていない場合は、Linuxディストリビューションに従って次のコマンドを使用してインストールできます。

# apt-get install apache2	[On Debian based Systems]
# yum install httpd		[On RedHat based Systems]

2. Apacheをインストールした後、ディレクトリをデフォルトのWebサーバードキュメントルート(/ var/www/html /または/ var/wwwシステムパスの下にあります)に変更し、以下のコマンドを発行してCollectd-webGithubプロジェクトのクローンを作成します。

# cd /var/www/html
# git clone https://github.com/httpdss/collectd-web.git

また、次のコマンドを発行して、次のCollectd-webスクリプトを実行可能にします。

# chmod +x /var/www/html/collectd-web/cgi-bin/graphdefs.cgi

手順2:デフォルトホストのApache CGI(.cgiスクリプト)を有効にする

3.ApacheがデフォルトのホストHTMLCollectd-web cgi-binディレクトリの下にあるCGIスクリプトを実行するには、sites-available default hostを変更して、Bashスクリプト(拡張子は.cgi)のApacheCGIインターフェイスを明示的に有効にする必要があります。以下のステートメントブロックを追加します。

まず、nanoエディターで編集するためにApacheのデフォルトのホスト構成ファイルを開きます。

# nano /etc/apache2/sites-available/000-default.conf

ファイルを編集用に開いている間に、次の画像に示すように、DocumentRootディレクティブの下に次のディレクティブブロックを追加します。

<Directory /var/www/html/collectd-web/cgi-bin>
                Options Indexes ExecCGI
                AllowOverride All
                AddHandler cgi-script .cgi
                Require all granted
</Directory>

ファイルの編集が完了したら、CTRL + oでファイルを閉じてnanoエディター(CTRL + x)を終了し、Apache CGIモジュールを有効にしてサーバーを再起動し、以下のコマンドを発行してこれまでに行ったすべての変更を適用します。

# a2enmod cgi cgid
# service apache2 restart
OR
# systemctl restart apache2.service     [For systemd init scripts]

4. CentOS/RHELのApacheCGIインターフェースを有効にするには、httpd.conf Apache構成ファイルを開き、ファイルの最後に次の行を追加します。

# nano /etc/httpd/conf/httpd.conf

次の抜粋をhttpd.confファイルに追加します。

ScriptAlias /cgi-bin/ “/var/www/html/collectd-web/cgi-bin"
Options FollowSymLinks ExecCGI
AddHandler cgi-script .cgi .pl

変更を適用するには、次のコマンドを発行してhttpdデーモンを再起動します。

# service httpd restart
OR
# systemctl restart httpd        [For systemd init scripts]

ステップ3:収集されたWebインターフェイスを参照する

5. Collectd-webインターフェースにアクセスし、これまでに収集されたマシンに関する統計を視覚化するには、ブラウザーを開き、HTTPプロトコルを使用してマシンのIPアドレス/ collectd-web/URIの場所に移動します。

http://192.168.1.211/collect-web/

ステップ4:Apache認証を使用して収集されたWebURLをパスワードで保護する

6. Apache認証メカニズム(.htpasswd)を使用して保護することにより、Collectd-Webインターフェイスへのアクセスを制限する場合。これにより、訪問者はWebリソースにアクセスするためにユーザー名とパスワードを入力する必要があります。

これを行うには、apache2-utilsパッケージをインストールし、ローカル認証用の資格情報のセットを作成する必要があります。この目標を達成するには、最初に次のコマンドを発行してapache2-utilsパッケージをインストールします。

# apt-get install apache2-utils	        [On Debian based Systems]
# yum install httpd-tools		[On RedHat based Systems]

7.次に、以下のコマンドを発行して、ApacheのデフォルトホストであるCollectd-webパスの下にある非表示のローカル.htpassファイルに保存されるユーザー名とパスワードを生成します。

# htpasswd -c /var/www/html/collectd-web/.htpass  your_username

次の権限を割り当てて、このファイルを保護してください。

# chmod 700 /var/www/html/collectd-web/.htpass
# chown www-data /var/www/html/collectd-web/.htpass

8.次のステップで、.htpassファイルを生成した後、編集用にApacheデフォルトホストを開き、次のスクリーンショットに示すように、次のディレクティブブロックを追加して、htpasswd基本サーバー側認証を使用するようサーバーに指示します。

<Directory /var/www/html/collectd-web >
                AuthType Basic
                AuthName "Collectd Restricted Page"
                AuthBasicProvider file
                AuthUserFile /var/www/html/collectd-web/.htpass 
                Require valid-user
</Directory>

9.変更を反映するための最後のステップは、以下のコマンドを発行してApacheサーバーを再起動し、上記のようにCoollectd-webURLページにアクセスすることです。

認証資格情報を要求するポップアップがWebページに表示されます。以前に作成したユーザー名とパスワードを使用して、CollectdWebインターフェイスにアクセスします。

# service apache2 restart		[On Debian based Systems]
# service httpd restart			[On RedHat based Systems]

OR
---------------- For systemd init scripts ----------------
# systemctl restart apache2.service		
# systemctl restart http.service