このチュートリアルでは、ソースからCactiネットワーク監視ツールをインストールして構成し、Debian9で最新バージョンを確実に入手する方法を示します。コードネームStretch。
Cactiは、完全にオープンソースのWebベースのネットワーク監視ツールであり、RRDtoolを介してネットワークとシステムのグラフィックを表示するように設計されています。 SNMP(Simple Network Management Protocol)プロトコルを使用して、スイッチ、ルーター、Linux、Unix、Windowsサーバーなどのネットワークデバイス、またはSNMPをサポートする他の種類のネットワークベースのデバイスからのネットワークトラフィックを収集および監視します。
要件
- ベアメタルマシンまたは仮想プライベートサーバーへのDebian9の最小限のインストール。
- システムネットワークインターフェイスカードの1つに設定された静的IPアドレス。
- rootアカウントまたはsudoを介したrootアカウント権限を持つユーザーへのアクセス。
ソースからCactiのインストールを開始する前に、まず、システムがCactiのコンパイルとインストールに関するすべてのソフトウェア要件を満たしていることを確認してください。最初のステップでは、root権限で編集するためにDebianソースリストファイルを開き、以下のファイルの抜粋に示すように、contribリポジトリとnon-freeリポジトリを追加します。
nano /etc/apt/sources.list
sources.listファイルのサンプル:
deb http://ftp.ro.debian.org/debian/ Stretch main contrib non-free
deb-src http://ftp.ro.debian.org/debian/ Stretch main
deb http://security.debian.org/debian-securitystretch/updates main contrib non-free
deb-src http://security.debian.org/debian-securitystretch/updates main
ファイルの編集が終了したら、以下のコマンドを発行して、ファイルを保存して閉じ、システムリポジトリとソフトウェアパッケージを更新して新しいパッケージを組み込みます。
apt update
aptアップグレード
次に、新しいコマンドを起動して、コマンドラインからシステムをさらに管理するために使用されるいくつかの必要なユーティリティをインストールします。
apt install wget patch unzip zip bash-completion
Cactiは、主にPHPサーバー側プログラミング言語で記述されたWebベースの監視ツールです。 Cacti phpファイルスクリプトを実行するには、Apache HTTPサーバーなどのウェブサーバーとPHPインタープリターがシステムにインストールされ、機能している必要があります。 Apache WebサーバーとPHPインタープリターを、Cactiが正しく実行するために必要なすべてのPHPモジュールと一緒にインストールするには、サーバーコンソールで次のコマンドを発行します。
apt install apache2 libapache2-mod-php7.0 php7.0 php7.0-snmp php7.0-xml php7.0-mbstring php7.0-json php7.0-gd php7.0-gmp php7.0- zip php7.0-ldap php7.0-mcrypt
ApacheとPHPをインストールしたら、root権限で次のコマンドを発行して、Webサーバーが稼働し、ポート80でネットワーク接続をリッスンしているかどうかをテストします。
netstat –tlpn
netstatの場合 ネットワークユーティリティはデフォルトではDebianシステムにインストールされていません。以下のコマンドを実行してインストールしてください。
apt install net-tools
netstatを検査する コマンド出力により、apacheデーモンがポート80で着信ネットワーク接続をリッスンしていることがわかります。
UFWファイアウォールアプリケーションなど、システムでファイアウォールを有効にしている場合は、次のコマンドを発行して、HTTPトラフィックがファイアウォールを通過できるようにする新しいルールを追加する必要があります。
ufw allow WWW
または
ufw allow 80 / tcp
最後に、次の図に示すように、HTTPプロトコルを介してDebianマシンのIPアドレスにアクセスして、ApacheWebサーバーのデフォルトのWebページをクライアントのブラウザに表示できるかどうかをテストします。マシンのIPアドレスがわからない場合は、「ifconfig」を実行します。 または'ip a' コマンド。この設定での私のIPは次のとおりです:http://192.168.1.14
次のステップでは、 file_uploads を確実にするために、PHPのデフォルト構成ファイルにさらにいくつかの変更を加える必要があります。 変数が有効になっていて、PHPのタイムゾーン 設定は正しく構成されており、システムの物理的な場所と一致しています。 /etc/php/7.0/apache2/php.iniを開きます 編集用のファイルを作成し、次の行が次のように設定されていることを確認します。
file_uploads=オン
date.timezone=ヨーロッパ/ロンドン
次のリンクhttp://php.net/manual/en/timezones.php
でPHPドキュメントによって提供されるタイムゾーンのリストを参照して、物理的なタイムゾーンに応じてタイムゾーン変数を置き換えます。必要な変更を加えたら、php infoファイルを作成し、apacheデーモンを再起動して、次のコマンドを発行して変更を適用します。
echo'<?php phpinfo(); ?>'| tee /var/www/html/info.php
systemctl restart apache2
次のURLのブラウザーからphpinfoスクリプトにアクセスして、PHPタイムゾーンが正しく構成されているかどうかを確認します(下の画像を参照)。日付設定まで下にスクロールして、phpタイムゾーン設定を確認します。
http://192.168.1.14/info.php
Cacti監視ツールは、構成と収集されたデータをRDBMSデータベースに保存します。このチュートリアルでは、MariaDBデータベースバックエンドを使用してCactiを構成します。以下のコマンドを発行して、MariaDBデータベースとmysqlデータベースにアクセスするために必要なPHPモジュールをインストールします。
apt install mariadb-server php7.0-mysql
MariaDBをインストールしたら、 netstat を実行して、デーモンが実行され、ローカルホストのポート3306でネットワーク接続をリッスンしていることを確認します。 コマンド。
netstat –tlpn | grep mysql
次に、MySQLコンソールにログインし、MariaDB root を保護します 次のコマンドを発行してアカウントを作成します。
mysql -h localhost
use mysql;
update user set plugin ='' where user ='root';
flush特権;
exit
次のステップでは、スクリプト mysql_secure_installationを実行してMariaDBを保護します DebianStretchリポジトリからのインストールパッケージによって提供されます。実行中、スクリプトは、MariaDBデータベースを保護するために、MySQLルートパスワードの変更、匿名ユーザーの削除、リモートルートログインの無効化、テストデータベースの削除などの一連の質問をします。以下のコマンドを発行してスクリプトを実行し、MySQLデーモンを完全に保護するために尋ねられたすべての質問にyesと入力していることを確認してください。ガイドとして以外は、以下のスクリプト出力を使用してください。
sudo mysql_secure_installation
注:このスクリプトのすべての部分を実行することは、すべてのMariaDBに推奨されます
本番環境で使用されているサーバー!各ステップを注意深くお読みください!
MariaDBにログインしてセキュリティで保護するには、最新のが必要です。 rootユーザーの
パスワード。 MariaDBをインストールしたばかりの場合、
まだrootパスワードを設定していません。パスワードは空白になります、
ここでEnterキーを押すだけです。
rootの現在のパスワードを入力します(noneの場合は入力します):
OK、パスワードを正常に使用し、次に進みます...
ルートパスワードを設定すると、誰もMariaDBにログインできなくなります
適切な権限のないrootユーザー。
すでにrootパスワードが設定されているので、安全に「n」と答えることができます。
ルートパスワードを変更しますか? [Y / n] y
新しいパスワード:
新しいパスワードを再入力してください:
パスワードが正常に更新されました!
特権テーブルの再読み込み..
...成功!
デフォルトでは、MariaDBインストールには匿名ユーザーがあり、誰でも許可します
ユーザーアカウントを作成せずにMariaDBにログインするには
それら。これは、テストとインストールの作成のみを目的としています
少しスムーズに。に移動する前にそれらを削除する必要があります
本番環境。
匿名ユーザーを削除しますか? [Y / n] y
...成功!
通常、rootは「localhost」からの接続のみを許可する必要があります。これ
誰かがネットワークからルートパスワードを推測できないようにします。
rootログインをリモートで禁止しますか? [Y / n] y
...成功!
デフォルトでは、MariaDBには「test」という名前のデータベースが付属しており、誰でも使用できます
アクセス。これもテストのみを目的としているため、削除する必要があります
本番環境に移行する前。
テストデータベースを削除してアクセスしますか? [Y / n] y
-テストデータベースを削除しています...
...成功!
-テストデータベースの権限を削除しています...
...成功!
特権テーブルをリロードすると、これまでに行われたすべての変更が確実になります
すぐに有効になります。
特権テーブルを今すぐリロードしますか? [Y / n] y
...成功!
クリーンアップ...
すべて完了です。上記のすべての手順を完了した場合は、MariaDB
インストールは安全になります。
MariaDBをご利用いただきありがとうございます!
MariaDBのセキュリティをテストするには、 rootを使用せずにコンソールからデータベースにログインしてみてください。 パスワード。 root にパスワードが指定されていない場合は、データベースへのアクセスを拒否する必要があります。 アカウント。パスワードが指定されている場合は、以下のスクリーンショットに示すように、ログインプロセスがMySQLコンソールに付与されている必要があります。
mysql -h localhost -u root
mysql -h localhost -u root –p
MariaDBデータベースにログインしながら、先に進んでCactiをインストールするためのデータベースを作成し、 cactiの管理に使用するユーザーを作成します。 データベース、次のコマンドを発行します。 サボテンを交換してください それに応じてデータベースユーザーとパスワード。
データベースcactiを作成します;
cacti。*のすべてを'cacti_pass'で識別される'cacti_user'@'localhost'に付与します;
特権をフラッシュします;
終了
また、以下のコマンドを発行して、MySQLタイムゾーンのcactiデータベースユーザーにselect権限を付与します。これは、Cactiの最新リリースをインストールして実行するための新しい要件です。
mysql -u root -p mysqlmysql -u root -p-e'mysql.time_zone_nameのselectを[emailprotected]'に付与します
次のステップでは、MySQLサーバーのデフォルト構成ファイルを開き、以下のサンプルに示すように次の行を追加します。
nano /etc/mysql/mariadb.conf.d/50-server.cnf50-server.cnfの下部に次の行を追加します ファイル:
max_heap_table_size =98M
tmp_table_size =64M
join_buffer_size =64M
innodb_buffer_pool_size =485M
innodb_doublewrite =オフ
innodb_additional_mem_pool_size =80M
innodb_flush_log_at_timeout =3
innodb_read_io_threads =32
innodb_write_io_threads =16
これまでに行ったすべての変更を適用するには、MySQLデーモンとApacheデーモンを再起動し、次のコマンドを発行してデーモンが実行されていることを確認します。
systemctl restart mysql apache2systemctl status mysql apache2SNMPサービスの構成
Cacti Web監視サービスは、デバイスのデータと統計を収集するためにSNMPプロトコルを使用します。 SNMPプログラム、SNMPデーモンサービス、およびSNMPMIBSをローカルのDebian9システムにインストールするには、root権限で次のコマンドを発行します。
apt install snmp snmpd snmp-mibs-downloader
また、Cactiがグラフ機能を表示するために使用する業界標準のデータロギングツールRRDtoolをインストールします。
apt install rrdtool
次に、SNMP構成ファイル /etc/snmp/snmp.confを編集します 「mibs」にコメントします 下の画像で説明されているように、行の前にハッシュタグ(#)を追加して行を作成します。
また、 snmpd.conf を開いて、SNMPデーモンのリモートアクセスとローカルホストアクセスを構成します ファイル 以下の行を編集および検索して更新するには、次のようにします。
nano /etc/snmp/snmpd.conf回線のコメントを解除して、すべてのインターフェースで接続をリッスンします
agentAddress udp:161、udp6:[::1]:161
次の行を追加して、 snmp_stringを介したローカルネットワークのSNMPクエリを許可します。 パスワード。 snmpコミュニティ文字列snmp_stringを置き換えます パスワードとそれに応じたネットワークCIDRアドレス。
rocommunity snmp_string localhost
rocommunity snmp_string 192.168.1.0/25
オプションで、サーバーに関する情報を提供するために、連絡先と場所の変数を変更することもできます。この情報は、サーバーの詳細を確認すると、Cactiの通知領域に表示されます。また、システムのホスト名、カーネルバージョン、およびシステムの稼働時間がCacti通知領域に表示されます。
この情報を変更するには、 sysLocationを編集します およびsysContact システム情報セクションの下の行に、独自の値を追加します。デフォルトでは、次の値が sysLocationに設定されています およびsysContact 。
sysLocationは湾のドックに座っています
sysContactMesnmpd.confに適切な変更を加えた後 ファイルを作成し、ファイルを保存して閉じ、SNMPデーモンを再起動して、以下のコマンドを発行して変更を反映します。次に、snmpdデーモンのステータスとリスニング状態の所有ポートを確認します。
systemctl restart snmpd.servicesystemctl status snmpd.servicenetstat -tulpn | grep snmp
SNMPのファイアウォールポートを開きます:
ufw allow 161 / udpSNMPデーモンが期待どおりに機能していることを確認し、ローカルホストのメモリツリーの下にあるすべてのSNMP値を取得するには、次のコマンドを実行します。
snmpwalk -v 2c -csnmp_stringlocalhostメモリ
Cacti-Spineをインストール
Cacti-Spineは、デフォルトのcmd.phpポーラーの代わりであり、実行時間を短縮するためにCで記述されています。 Debian 9のソースからCacti-Spinepoolerをコンパイルしてインストールするには、最初に次のコマンドを実行して、必要なすべての依存関係をシステムにインストールします。
apt install build-essential dos2unix dh-autoreconf help2man libssl-dev libmysql ++-dev libmariadb-dev libmariadbclient-dev librrds-perl libsnmp-dev次に、 wgetを使用して最新バージョンのCacti-Spinetar圧縮アーカイブをダウンロードします。 ユーティリティを使用して、tarballアーカイブを抽出し、次のコマンドを発行してcacti-spine抽出ディレクトリに入ります。
wget https://www.cacti.net/downloads/spine/cacti-spine-latest.tar.gztar xfz cacti-spine-latest.tar.gzcd cacti-spine-1.1.24 /次に、以下のコマンドを発行して、ソースからCacti-Spineユーティリティをコンパイルしてインストールします。
./ bootstrap./ configuremakemake installCacti-Spineは/usr / local / spine /にインストールされます システムパス。 Spineは、ICMP ping要求をサポートするために、スパインバイナリのSUIDビットを設定することをお勧めします。
chown root:root / usr / local / spine / bin / spinechmod + s / usr / local / spine / bin / spineまた、以下のファイルの抜粋に示すように、構成ファイルを編集して、Spineをcactiデータベースに接続する必要があります。
nano /usr/local/spine/etc/spine.confspine.conf ファイルサンプル。それに応じてクレデンシャルを置き換えます。 Cacti用に構成されたものと同じデータベースクレデンシャルを使用します。
DB_Host localhost
DB_Database cacti
DB_User user_cacti
DB_Pass pass_cacti
DB_Port 3306
DB_PreG 0
Cactiをインストールする
Debian 9のソースからCactiをインストールするには、まずCacti tarball圧縮アーカイブの最新バージョンをダウンロードして抽出し、次に次のコマンドを発行して、抽出したすべてのファイルをApacheWebルートパスにコピーします。
wget https://www.cacti.net/downloads/cacti-latest.tar.gztar xfz cacti-latest.tar.gzcp -rf cacti-1.1.24 / * / var / www / html /
次のステップでは、以下の例に示すように、cacti構成ファイルを開き、次の行を更新して、MySQL cactiデータベースのユーザー名、パスワード、ホスト、およびURLパスを適宜反映します。
nano /var/www/html/include/config.phpサボテンconfig.php ファイルサンプル:
$ database_type ='mysql';
$ database_default ='cacti';
$ database_hostname ='localhost';
$ database_username ='cacti_user';
$ database_password ='cacti_pass';
$ database_port ='3306';
$ database_ssl =false;下にスクロールして、パス変数を“ / cactiから変更します 」から「/ 」
$ url_path ='/';
次に、 cacti.sql をロードして、cactiデータベースにデータを入力する必要があります。 Webサーバーのドキュメントルートの場所にあるスクリプトと、以下のコマンドを発行してcactimysqlテーブルを確認します。
mysql -u cacti_user cacti -pmysql -u cacti_user cacti -p-e'テーブルを表示'最後に、WebインターフェイスからCactiのインストールを開始する前に、以下のコマンドを実行して、Apache Webサーバーによってインストールされたデフォルトのindex.htmlファイルを削除し、Cactiのログファイルを作成して、Cactiインストールパスへの完全な書き込み権限を持つApacheランタイムユーザーを許可します。 。
rm /var/www/html/index.htmltouch /var/www/html/log/cacti.logchown -R www-data:www-data / var / www / html /ブラウザからシステムのIPアドレスまたはドメイン名にアクセスし、次のURLを開いて、WebインターフェイスからCactiのインストールを開始します。
http://192.168.1.14/install
最初の画面で、[GPLライセンス契約に同意する]をオンにし、[次へ]ボタンをクリックして、下のスクリーンショットに示すように続行します。
次の画面で、下にスクロールして、すべてのシステム要件がインストーラーによって渡されているかどうかを確認し、[次へ]ボタンをクリックしてインストールプロセスを進めます。
次に、新しいプライマリサーバーを選択します インストールの種類として、[次へ]ボタンをクリックして続行します。
次に、すべての重要なバイナリの場所とバージョンがcactiインストーラーによって正しく検出されているかどうかを確認します。また、Spineバイナリパスを / usr / local / spine / bin / spineに更新する必要があります 。クラシックテーマを選択し、[次へ]ボタンをクリックして続行できます。
次の画面で、インストーラーは、Webサーバーがcactiインストールパスへの書き込みを実行できるかどうかを確認するために、ApacheWebルートディレクトリのアクセス許可を確認します。必要なすべてのパスが書き込み可能である場合は、[次へ]ボタンをクリックして続行します。
提供されたリストからすべてのテンプレートを選択し、[完了]ボタンをクリックしてインストールを完了します。
インストールプロセスが完了したら、次のスクリーンショットに示すように、次のデフォルトのクレデンシャルを使用してCacti Webインターフェイスにログインし、管理者のデフォルトのパスワードを新しい強力なパスワードに置き換えます。
ユーザー名:管理者
パスワード:管理者
Cacti Webインターフェースにログインした後、コンソール->構成->設定->に移動します。 ポーラー ポーラータイプをcmd.phpからスパインに変更します 下の画像に示すように、バイナリ。下にスクロールして、保存を押します 変更を適用するためのボタン。
次に、コンソール->構成->設定->パスに移動し、Cacti-Spineを更新します 構成ファイルのパスを次のパスに設定します/usr/local/spine/etc/spine.conf 下の画像に示すように、[保存]ボタンをクリックして構成を適用します。
SNMPを介して監視する新しいデバイスを追加するには、[コンソール]->[管理]->[デバイス]に移動します。 +を押します 下の画像に示すように、アイコン。デモンストレーションの目的で、SNMPプロトコルを介してCactiによって監視されるローカルホストマシンを追加します。
SNMPを介して監視される新しく追加されたLinuxデバイスの場合、デバイスの説明、監視対象デバイスのホスト名、FQDN、またはIPアドレスを追加し、ローカルLinuxマシンを選択します。 デバイステンプレートとして。 [SNMPオプション]で、適切なSNMPバージョン(この場合はバージョン2を使用します)を選択し、次の画像で説明されているように、デバイスのSNMPコミュニティ文字列を記述します。 SNMPポートが変更されていない場合は、ポート値をデフォルトのままにし、終了したら、下にスクロールして[作成]ボタンをクリックし、監視するためにデバイスをCactiデータベースに追加します。
デバイスがCactiデータベースに追加された後、デバイスが適切に検出および照会された場合に備えて、SNMPの概要がデバイスページの上部に表示されます。このデバイスのRRDToolSNMPグラフを作成するには、このデバイスのグラフの作成をクリックします。 リンクをクリックし、さらに調べたいグラフテンプレートを確認し、[作成]ボタンを押して次の画面に移動し、次の画像に示すように、もう一度[作成]ボタンを押して終了します。
グラフを視覚化するには、[コンソール]->[管理]->[デバイス]に移動し、さらにアクションを実行するデバイスを確認して、アクションメニューから[ツリーに配置(デフォルトツリー)]を選択します。
次の画像で説明するように、新しい画面で、宛先ブランチをデフォルトのままにし、[続行]ボタンをクリックしてプロセスを終了します。
最後に、Cactiポーラーが監視対象デバイスに関するデータの収集を開始するには、5分ごとにSNMPを介してデバイスにクエリを実行する新しいcronジョブを追加する必要があります。以下のコマンドを発行して、Apacheランタイムユーザーが所有および実行するスケジュール済みジョブを追加します。
crontab –u www-data –eCrontabのジョブライン:
* / 5 * * * * /usr/bin/php /var/www/html/poller.php> /var/www/html/log/cron.log 2>&1
pooler cronjobを追加したら、約30分待ってCactiにデータを収集する時間を与えてから、CactiWebインターフェイスの[グラフ]タブに移動します。デフォルトのツリーを展開すると、監視対象のマシンから収集されたグラフが、以下のスクリーンショットに示すように表示されます。
今のところ、Cactiインターフェースは、HTTPプロトコルを介して、セキュリティで保護されていない方法でクライアントのブラウザからアクセスできます。デバイスに関するすべての機密情報、およびサボテンのログイン資格情報は、プレーンテキストで送信されます。クライアントのブラウザとCactiWebインターフェイス間のトラフィックを暗号化するには、Apache SSL構成を有効にするために、root権限で次のコマンドを発行します。
a2enmod ssla2ensite default-ssl.confsystemctl restart apache2その後、HTTPSプロトコルを介してCactiWebインターフェイスに移動します。 Apache Webサーバーは自己署名証明書を使用して接続を暗号化するため、ブラウザにエラーメッセージが表示されます。エラーを受け入れると、次のスクリーンショットに示すように、CactiWebインターフェイスに安全にアクセスできるようになります。
それで全部です! Debian 9のソースからCactiを正常にインストールおよび構成しました。Cactiに関するその他のカスタム設定については、次のリンクのドキュメントページにアクセスしてくださいhttps://docs.cacti.net/manual:100
Debian