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

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

Monitor Linux Server Resources

記事の最後では、.hpasswd Apache 認証メカニズムを使用して Collectd-web インターフェースを保護する方法も紹介します。

要件

この記事の要件は、お使いの Linux システムに CollectdCollectd-Web がインストールされている必要があります。これらのパッケージをインストールするには、前回のこのシリーズの記事の手順 #1#2 を以下のリンクで参照してください:

  1. Linux に Collectd と Collectd-Web をインストールする

上記リンクから以下の二つの手順に従ってください:

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

これらの二つの必須事項が正常に完了したら、この記事のさらなる手順に従って Collectd-webApache CGI と構成できます。

Step 1: Apache Web サーバーのインストール

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

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

2. Apacheをインストールした後、デフォルトのウェブサーバードキュメントルートにディレクトリを変更します(/var/www/html/または/var/wwwシステムパスにあり、以下のコマンドを使用してCollectd-web Githubプロジェクトをクローンします:

# 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. デフォルトホストHTML Collectd-web cgi-binディレクトリにあるCGIスクリプトを実行するために、Bashスクリプト(.cgi拡張子)のApache CGIインターフェイスを明示的に有効にするには、sites-availableデフォルトホストを変更し、以下のステートメントブロックを追加する必要があります。

Debianシステムでは

まず、nanoエディタでApacheデフォルトホスト設定ファイルを編集します:

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

ファイルを編集すると、以下のディレクティブブロックをDocument Rootディレクティブの下に追加します。下の画像に示すように:

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

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

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

RedHatシステムでは

4. CentOS/RHELのApache CGIインターフェイスを有効にするには、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: Collectd-web インターフェイスを参照する

5.これまでに収集されたマシンの統計情報を表示するために Collectd-web インターフェイスを訪問するには、ブラウザを開き、マシンの IPアドレス/collectd-web/ URI に HTTP プロトコルを使用して移動してください。

http://192.168.1.211/collect-web/
Collectd-Web Dashboard

ステップ 4: Apache 認証を使用して Collectd-web URL をパスワードで保護する

6. Collectd-web インターフェイスへのアクセスを制限し、Apache 認証メカニズム (.htpasswd) を使用して保護する場合は、訪問者が 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>
Apache Password Protect Directory

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

A pop-up should appear on the web page requesting for your authentication credentials. Use the username and password created earlier to access Collectd web interface.

# 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  
Apache Password Authentication
Collectd-Web Panel

Source:
https://www.tecmint.com/monitor-linux-server-resources-with-collectd-web-and-apache-cgi/