PR

FreeBSD Cacti インストール

FreeBSD
記事内に広告が含まれています。

前回までに SNMP エージェント側のセットアップを行ってきました。今回から SNMP マネージャ側のセットアップを行ってゆきたいと思います。以前より書いてきた通り、CactiZabbix をマネージャとして使えるようにしてゆきます。google 検索で “snmp cacti” と検索すると 32万件ヒットします。一方 “snmp zabbix” と検索すると 69万件ヒットします。時間/日付によって数字は異なると思いますが、関係のないものがヒットしていないとすると、世間では Zabbix の方が人気がありそうです。Cacti も Zabbix も基本的なシステム構成は似ています。マスターのサーバがいて、遠隔地にリモートポーラーやプロキシがいて、マスタ同様に SNMP エージェントにアクセスして、データベースをアップデートしてゆきます。Cacti にはないのですが、Zabbix では各ホストに Zabbix のエージェントがいて、UN*X のコマンドを叩いたりして計測や問題修正を行ったりできます。Cacti でも SNMP 経由でスクリプトを実行できますので、やり方は違いますがほぼ同じことができると思います。個人的な感想ですが、Cacti ではカスタムグラフが少々とっつきにくいと思います。この点、Zabbix の方がまだわかりやすいような気がします。そこまで深入りはしない予定なので、動くようになったところでマニュアルや 32万件の資料と格闘いただく必要があると思います 🙂 新たにあれ?と思うことは既に誰かがあれ?と思って、解決策があることがほとんどです 🙂

Cacti Compile

今回は Cacti のセットアップを行ってゆきます。まず Cacti 本体からコンパイルしてゆきます。コンパイルするにあたって、/etc/make.conf の準備を行います。こんな感じにすると、必要な make オプションがセットされると思います。php のバージョンを 8.2 と指定して、データベースを mariadb 10.6 を使うようにします。そして、php 内のモジュールとして使いたいものを指定します。

make 一発コーヒータイム!

こんな感じになっていれば OK です。

例によって出力されたメッセージを確認しておきます。動かすための重要な情報が書かれています。ここではデータベースとユーザ、およびテーブルの作り方が表示されています。

データベースの残りの作業でタイムゾーン情報のデータベースへの取り込み方と、Cacti の初期設定ファイルでのタイムゾーンの設定方法が書かれています。そして、cron ジョブの登録方法。

ここでは Apache24 Web サーバの設定方法。

ログの位置と RRD ファイルの位置が書かれています。さらに、新規インストールではなくアップグレードを行う場合の注意点も書かれています。

Linux Proc ファイルシステムをマウントしたら幸せなことが起こるようになるということですが、これに関しては最後に行います。

Cacti documents

ここまでの本題は Cacti のドキュメントを見たかっただけなのですが、ドキュメントのインデックスファイルが php となっている模様。apache24 と php82 関係のインストールが済むまでドキュメントはお預けとなりました。これらをとりあえずインストールしてマニュアルを読めるようにします。

まずは WEB サービスをインストールします。

こんな感じでエラーなく終了していれば OK のはずです。当然表示されたメッセージには目を通しておいてください。

では cacti をインストールしたときのメッセージに従って、apache24 の cacti の設定を追加します。

表示されたメッセージの完コピです。

自動起動するように /etc/rc.conf をいじって、起動します。

大丈夫なようなので、apache24 の php モジュールをインストールします。php82 を指名したので、mod_php82 となります。

php 関連の初期設定として php.ini を作成します。プロダクション用をコピーして、apache24 を再起動します。

必要なアプリケーションは入ったはずなので、ドキュメントを開いてみます。ムッ 🙁 怒られた。

Cacti database creation

データベースが使えないと怒られているので、 cacti の設定ファイルを作成してデータベースの情報を記入します。

これがデフォルトのファイルの内容です。同じホストでデータベースも動いていると想定されています。

まずは database さんで cacti 用のデータベースとユーザ、およびそのパーミッションを設定します。

そして、cacti さんに戻ってデータベースのテーブルを作ってゆきます。このパスワードは ‘PuruPuru’ です。直前のスクショに見えています。

そして、タイムゾーンに関する情報をデータベースに突っ込みます。入れる先はシステムのデータベースです。ですので、cacti ユーザに対して読み出しの権限を付与する必要があります。この時は忘れていたので、後程権限を与えています。

リモートデータベースの接続情報が入ったので、再度ドキュメントを開いてみます。

なんでやねん 🙁

compiling php82 modules

apache のエラーログを見てみます。php82 のモジュールが無いと怒っています。

ということで、追加のモジュールをコンパイルします。

マニュアルを見るだけなのに、必要なソフトウェアのほとんどを入れる必要があるのはちょっといけませんねぇ。インターネットで探した方がよかったかもしれません 🙂

fixing file/directory permissions

さて見えるでしょうか?ムッ 🙁 ログが書けないと怒っています。

理由を確認するために設定を見てみます。ファイルやディレクトリのオーナー情報から、意図を手繰ると、www ユーザさんをcacti グループに入れて、ディレクトリのパーミッションを調整してやると大丈夫そうです。

ということで、必要な変更を行います。passwd や group 関係は NIS を使用していますので、NIS マスターで変更しました。

さぁ、これでどないじゃ?おぉ、見えました。一通り目を通します。

spine

これは無くても動くのですが、大規模なサイトでは C 言語で書かれた spine を使用するほうがシェルスクリプトの実行を行うよりオーバヘッドが少なくて早く処理できるようなので、そのようにspine をコンパイルします。

特にメッセージは表示されませんでした。

次に必要なツールとして rrdtool が入っているかどうか確認します。

adjusting database parameters

次にデータベースの調整です。マニュアルの内容をここでも完コピしています。

sticky bit for spine in FreeBSD

FreeBSD の場合、spine で ICMP を使用する場合はスティッキービットを立てる必要があるということなので、そのようにします。セキュリティにうるさい会社ですと、スティッキービットなしで、UDP や TCP を使った代替え策を使う必要があるかもしれません。

いくつかのテーブルのデータベースエンジンを指定します。

first login to Cacti

では、cacti の URL を開いてみましょう。

おぉ、動いたような気がするので、デフォルトのアカウント情報を入れてログインします。まぁ、デフォルトパスワードを使う危険な行為はしないでおきましょう 🙂 変更せずには進めません。

変更ができたらライセンスに同意する必要があります。GPL ライセンスとなっています。

adjusting php parameters in php.ini file

スクリーンショットを取り忘れたのですが、php のメモリリミットを増やす必要があるとワーニングが出ていたので、php.ini の該当する箇所を変更して様子を見ます。

ステータスが passed になりました。同様に実行時間の最大許容値を増やす必要もあるということなので、同様に php.ini をいじります。

上のメッセージが表示されたおかげで、タイムゾーン関係のテーブルへのアクセス権限を cacti ユーザに与えておくようにと書かれていたことを思い出しました。

これで、インストール前のチェックが完了しました。

データベースの再起動時に mysql の調整で作ったファイルに古くて使わなくなったパラメータがあるということなので、それらをコメントアウトしておきます。

ここからが本当のインストールとなります。初めての Cacti サーバなので、New Primary Server となります。既にあるプライマリの Cacti に追加する形にするのであれば他の選択肢を選びます。今回はこの1台のみを使用しますので、2台目以降に関しては 32 万件の資料から検索してみてください。そう難しいことはなはずです。

ディレクトリのオーナーに問題があるようです。

Linux 方式の chown の引数で書かれているので、FreeBSD で使えるようにちょっと手直しします。

変更が OK のようなので、他のエラーも同様に修正してゆきます。

ログのディレクトリが無いということなので作成してオーナーを変えておきます。

このセクションもすべてパスしました。次に移動します。

ほぼ OK ですが、spine の設定ファイルのパスが抜けています。

cacti さんを調べて spine.conf のパスを書き加えます。

セキュリティには気を付けましょう。

ここからは cacti 自身の設定に移ります。

snmp デフォルトのコミュニティで知られる public は先に他の snmp エージェントで使用した文字列と置き換えます。

変更しておけば自動でそれらを見るけてくれます。それからリモートデバイスの public は使用できないようにしておきましょう。snmp を使って覗き見されたくはありませんので 🙂

XML のテンプレートです。全部入れておきましょう。

データベース関連のワーニングです。NLS 仕様のデータベースで UNICODE を使用できるようにデータベースのデフォルトを変えておきましょう。

この SQL 文は上のスクショに書かれています。コピペです。

データベースのワーニングが消えたので、テーブルにも同様の対策をしておきましょう。

テーブルはたくさんあります。

実行の確認を求められます。ここでやめる理由はありません 🙂 Just do it !!

1,2分で終了します。コーヒーを飲む時間はありませんでした。

これで全てのインストレーション作業が完了したことになります。動くでしょうか?

動いたようです 🙂

customization

前もってコンパイルした spine を使いたいので設定ファイルを編集します。

そして、データベースへの接続情報を入力しておきます。

マニュアルに戻って確認しておきます。

実行されたスクリプトからエラーが出ているように見えます。が、spine 自体は動いているようです。

cacti の設定で spine を使用するようにします。

認証関係はこの4種類あります。mariadb のユーザから AD のユーザまで選ぶことができます。

メールを送れるようにしておくと、問題が起きたときにメールを送ってくれます。

“Send a Test Email” を実行してメールが届くか確認します。よさげです。Thunderbird からポップアップが出ています。

editing /etc/crontab file

では実際にポーリングするために cron ジョブを登録します。

まずは自動で家庭内ネットワークをスキャンしてみましょう。

27個のデバイスが見つかり、内13台は SNMP をしゃべるようです。

SNMP をしゃべるデバイスを監視対象として登録します。

何かをしてメッセージが表示されるとしばらくそのメッセージが表示されたままになります。タイムアウトになるか、OK を押すと消えます。Pause を使うと長いメッセージを時間をかけて読むことができます。

cron ジョブが実行されてしばらく経過してもグラフが見えません。

表示されているエラーメッセージ通りグラフが貯められるディレクトリの調整を行います。cacti グループの www ユーザが書き込みますので、g+w で OK です。

これでしばらく放置しておくとグラフが作られてきました。

最終確認で cacti のログを見てみます。マッカッカです 🙁

これらのエラーを直してゆきます。cacti インストール直後は root が所有者でグループは wheel となっています。cacti のディレクトリなのに書き込めないのはおかしいと思われます。

このディレクトリ配下のいくつかのサブディレクトリのパーミッションは変更しましたが、バッサリとやってしまって問題があるとは思えません。Cacti インストーラの修正では、オーナーを www:www としましたが、オーナーを cacti:cacti にして、cacti グループに書き込み権限を与える方がスマートと思います。

こうでなくっちゃ 🙂

linux compatibility

そして、Linux 形式の proc ファイルシステムが使えるようにすると幸せになれるそうです。説明によると、これで多くのスクリプトがまともに動くようになるということです。

それでもエラーが出るスクリプトはエディタで直接編集します。私が見た限りエラーはこのファイルからのみでした。

もう一度放置プレイで様子を見て再度ログを確認します。いい色ですねぇ 🙂 こうでなくっちゃ 🙂

これで動くようになったはずなので、監視対象をどんどん追加してゆきましょう。ただすべての機能を使ったわけじゃありませんので、何か他のことをすると、エラーになるかもしれません。モグラたたきで直してゆきましょう 🙂 ここまで来れれば難しくはないでしょう。

以下広告


コメント