収集-最低コストでシステムを追跡します。 通知を設定して使用する

これは何ですか



Collectedは、10秒ごとに収集する小さなデーモンです。

システムリソースの使用に関する統計。 収集する可能性があります

いくつかのホストの統計とそれをサーバーに送信する

美しいグラフのレンダリングに取り組んでいます。


このコレクターの主な違いは、 ポーリング/プルではなくプッシュに基づいて機能することです。 つまり 彼は「ハング」してリッスンし、サーバー自体が統計を送信します。



どうする?



この投稿で説明したいこと:





設置



いつものように、お気に入りのバッチインストーラーemerge / yum / apt-getまたはcho-there-still-existsを使用します。

debianの場合 。 標準ポートには収集されていません。このため、 バックポートを接続する必要があります。

これは非常に簡単に行われます:

行を追加する

deb http://backports.debian.org/debian-backports squeeze-backports main
      
      





sources.listでまたは /etc/apt/sources.list.d/の この行で新しいファイルを作成します

次に、 apt-get updateを実行します



次に、バックポートからパッケージをインストールするには、コマンドを書きます

 apt-get -t squeeze-backports install "package"
      
      





まあ、または適性を通して

 aptitude -t squeeze-backports install "package"
      
      





この場合、次のようになります

 apt-get -t squeeze-backports install "collectd"
      
      





紳士には小さなニュアンスがあります。 第一に、〜x86を装っており、第二に、デフォルトでインストールされるプラグインはごくわずかです。 インストールするプラグインを指定するには、 package.useタイプcollectd_plugin_memory )またはmake.confで変数COLLECTD_PLUGINS = ""に指定する必要があります

これらがインストールされています:

 COLLECTD_PLUGINS="apache cpu df disk interface load memory network ntpd processes notify_email ping logfile syslog rrdtool swap hddtemp exec filecount java sensors target_notification target_set target_replace"
      
      





プラグインに応じて、多くのことを引き出すことができることに注意してください;)ので、必要なものを選択してください。



確立されたバージョンgentoo - 5.1.1debian 、タンバリンとのいくつかのダンス-4.1.1 (ただし、手動で5.xに更新する必要があります、なぜ-以下をお読みください)centos6-5.1.0



JFYIアップグレードが必要な理由: rrdの出力はこれらのバージョンで異なるため、変換のために松葉杖を書くか、フロントエンドの面にグラフを生成する2つのスクリプトを書きます。 また、スケジュールの変更のため、ホスト上のクライアントバージョンを考慮に入れて、通知のルールを個別に作成する必要があります。



DebianおよびCentosでは、すべてのプラグインがインストールされました。 まあ、完成したパッケージからそれが置かれているので:)



カスタマイズ



さらに進んでいます。 私は設定形式がまったく好きではなかったので、どこを探すのに長い時間がかかったので、自分が必要な部分にカットしました。他の設定は、設定からインラインで接続できるためです:)

繰り返しますが、 /etc/collectd.confにある1つのファイルにあるgenの構成全体です 。 Debianでは、美しいパス/etc/collectd/collectd.confに配置され、 フィルターしきい値などの設定の個別の部分が個別のファイルに配置されます。これは朗報です。 一般に、私は紳士でほぼ同じ構成を行い、少し変更しました。 特に、必要なプラグインの接続は個別のディレクトリに配置され、各プラグイン(より正確には、その構成)も個別のファイルにあります。 ここに彼がどのように見え始めたかがあります:



 # Config file for collectd(1). # # Some plugins need additional configuration and are disabled by default. # Please read collectd.conf(5) for details. # # You should also read /usr/share/doc/collectd-core/README.Debian.plugins # before enabling any more plugins. Hostname "gen-collectd-master.local" FQDNLookup true BaseDir "/data/collectd" #PluginDir "/usr/lib/collectd" #TypesDB "/usr/share/collectd/types.db" "/etc/collectd/my_types.db" #Interval 10 #Timeout 2 #ReadThreads 5 LoadPlugin logfile LoadPlugin syslog <Plugin logfile> LogLevel "info" File "/data/collectd/collectd.log" Timestamp true PrintSeverity true </Plugin> <Plugin syslog> LogLevel info </Plugin> LoadPlugin network <Plugin network> Listen "192.168.56.130" "8085" </Plugin> Include "/etc/collectd/inst/*.active" Include "/etc/collectd/conf/*.conf" Include "/etc/collectd/filters.conf" Include "/etc/collectd/thresholds.conf"
      
      





これがメインの設定ファイルです。デフォルトのファイルと比較すると、私のファイルにはすべてのプラグインが含まれておらず、メインの設定であると思われるプラグインのみが含まれていることに気付くでしょう。 残りのファイルはinstおよびconfディレクトリから含まれています。

JFYIまた、パラメータFQDNLookup trueに注意してください- ホスト名に何かが書かれている場合、解決するはずです! そうしないと、エラーでクラッシュします。別の解決策は、このパラメーターをfalseに設定することです。



instディレクトリには、プラグイン構成ファイルが含まれています。

 gen-collectd-master collectd # ls -la /etc/collectd/inst/ total 32 drwxr-xr-x 2 root root 4096 Nov 26 20:57 . drwxr-xr-x 4 root root 4096 Nov 26 21:00 .. -rw-r--r-- 1 root root 15 Nov 26 13:54 cpu.active -rw-r--r-- 1 root root 125 Nov 26 13:54 if.active -rw-r--r-- 1 root root 16 Nov 26 13:54 load.active -rw-r--r-- 1 root root 18 Nov 26 13:54 memory.active -rw-r--r-- 1 root root 122 Nov 26 18:25 mounts.active -rw-r--r-- 1 root root 133 Nov 26 20:57 ping-hosts.active
      
      





設定からわかるように、「拡張子」がアクティブなファイルのみを接続します



JFYIすべてのプラグインパラメータは、 collectd.confドキュメントページにあります。  



さらに、 confディレクトリには2つのファイルが含まれています。1つはnotify_emailプラグインを構成するためのもので、もう1つはrrdtool設定用です

 gen-collectd-master collectd # ls -la /etc/collectd/conf/ total 16 drwxr-xr-x 2 root root 4096 Nov 26 20:30 . drwxr-xr-x 4 root root 4096 Nov 26 21:00 .. -rw-r--r-- 1 root root 425 Nov 26 20:30 mail.conf -rw-r--r-- 1 root root 83 Nov 26 13:54 rrdtool.conf
      
      





一般に、それらはcollectd.confに安全に返すことができますが、 何らかの理由で私はちょうどそれをしたかったです:)



conf / rrdtool.confファイルの内容

 LoadPlugin rrdtool <Plugin rrdtool> DataDir "/data/collectd/rrd" </Plugin>
      
      





ここにあるように、プラグインをダウンロードし、パラメーターを設定します。



conf / mail.confファイルの内容

 LoadPlugin notify_email <Plugin notify_email> SMTPServer "stmp.mail.ru" SMTPPort 25 SMTPUser "collectd@mail.ru" SMTPPassword "my-super-password-for-mail" From "collectd@mail.ru" # # <WARNING/FAILURE/OK> on <hostname>. # # Beware! Do not use not more than two placeholders (%)! Subject "[collectd] %s on %s!" Recipient "recipient@mail.ru" </Plugin>
      
      







通知を設定するときにこのプラグインが必要になります。



JFYIは、独自の通知ハンドラーを作成できます。 これを行うには、 execプラグインを接続し、通知が生成されたときに実行されるスクリプトを登録する必要があります。 これは次のように行われます。



 LoadPlugin exec <Plugin exec>    NotificationExec    thunder "/home/thunder/ttest.sh" "test1" </Plugin>
      
      





このコマンドの一般的な仕様は次のようになります。

 NotificationExec <> "<-->" ["1"] ["2"]  ..
      
      







以下はスクリプトに書かれています

 #!/bin/bash cat >> /home/thunder/ttest.log
      
      





通知中のログには、次のようなものがあります



 Severity: WARNING Time: 1354181979.770 Host: jen-master-local Plugin: cpu PluginInstance: 0 Type: cpu TypeInstance: user DataSource: value CurrentValue: 9.989738e+01 WarningMin: nan WarningMax: 8.500000e+01 FailureMin: nan FailureMax: nan Host jen-master-local, plugin cpu (instance 0) type cpu (instance user): Data source "value" is currently 99.897375. That is above the warning threshold of 85.000000.
      
      





ここにあるすべてのデータを見ると、解析することは難しくなく、独自の通知機能を書くことも難しくありません。



メインのcollectd.confファイルに戻る

syslog / logfileについては説明しませんので、 ホスト名もすべて明確です。

ネットワークプラグイン-より具体的にはプラグインについては、 ここで読むことができます。特に、そこで認証を設定できます。 自宅では、私はまだそれを考えません。各人がそれをどうやって自分で決めるか:)

このプラグインは、 収集されたサーバー間の相互作用に役立ちます。

現在のサーバーを統計を収集するサーバーとして設定するには、 Listenパラメーター「192.168.56.130」「8085」を設定する必要があります。192.168.56.130は、デーモンがハングし、他のサーバーからの着信データをリッスンするIPアドレスです。 8085-ハングするポート。

クライアントを構成するには、 リスンの代わりに サーバー "192.168.56.130" "8085" 、それぞれ192.168.56.130-データの送信先のIPアドレスを指定します。 8085-データを送信するポート。



JFYIポートは省略できます。デフォルトではポート25826が使用されますが、 UDPプロトコルで機能することを覚えておいてくださいしたがって、 ファイアウォールがどこかにある場合は注意してください



プラグインの構成はあちこちで違いはありません。



クライアント 」で監視するために設定したすべてのものは、「 サーバー 」に送信されます



メール通知



おいしいものに移りましょう。 いくつかのプラグインの通知を構成する方法の唯一の例は、 thresholds.conf configにあります。

プラグインとサンプルのメインロード:

 LoadPlugin "threshold" <Plugin "threshold"> <Type "foo"> WarningMin 0.00 WarningMax 1000.00 FailureMin 0.00 FailureMax 1200.00 Invert false Instance "bar" </Type> </Plugin>
      
      





この仕組みの簡単な説明。 しきい値は通常のプラグインであるため、プラグインとして読み込まれます。 すべてのパラメーターは、 <Plugin "threshold">コンテナー内に設定されます。 その内部では、コンテナは次の順序で設定できます-「 ホスト 」、「 プラグイン 」、「 タイプ 」。 つまり ホストコンテナ内にはプラグインコンテナがあり、その内部にはタイプコンテナがあります。 ホストブロックはオプションで、特定のホストの通知をバインドできます。 また、すべての値はTypeブロック内でのみ設定する必要があります。Typeブロック外で設定できる値はInstanceのみです。

複数のブロックが同じ値に適用される場合、最も正確なブロックが使用されます。 T.O. プラグインにある種の標準ブロックを指定してから、たとえば、特定のホストの他のパラメーターでそれをオーバーライドできます。 それでは、通知の設定に直接進みましょう。



CPUプラグイン



 <Type "cpu">     Instance "user"     WarningMax 85     Hits 1 </Type>
      
      





ここでは、 Typeブロックの前にPluginブロックを書くことをスキップできます。 ユーザー (ユーザープロセス)の値を監視する必要があることを示し、値が85に達すると警告を送信します。 ヒット -1つの間隔でのこの値のヒット数(メイン構成の設定を参照)、この場合は1 、つまり 10秒以内に値が85以上の場合、通知が生成されます。 ここで、たとえば6ずつ値をより多く設定できます。つまり、1分以内に値がこれである場合、心配することがあります。



Pingプラグイン



 <Plugin "ping">    <Type "ping_droprate">        FailureMax 0.9    </Type> </Plugin>
      
      





ここでわかるように、 pingタイプをping_droprateに設定します このテーブルには、 0または1の値が含まれます。 したがって、値が0.9を超える場合、 Failureタイプの生成を指定します。 1を設定すると、動作しません:)



メモリプラグイン



 <Plugin "memory">    <Type "memory">        Instance "free"        WarningMin 25000000    </Type> </Plugin>
      
      





インスタンスfreeを選択します。空きメモリを監視するため、ここでは空き値が低いほど悪いので、 WarningMinを設定します。 値が指定された値に達するか、それより小さくなると、通知が生成されます。



今、最も興味深いのは、これがドキュメントにないことであり、例を見つけるのが難しいことがわかったので、実験しなければなりませんでした。

ディスク上の場所で通知を行います



Dfプラグイン



 <Plugin "df"> Instance "root" <Type "df_complex-used"> # DataSource "value" WarningMax 4025360000 FailureMax 6025360000 Percentage false </Type> </Plugin>
      
      







そのため、バージョン5.xでは、dfプラグインのテーブルを作成するロジックが変更されたため、テーブルへのアクセスがフレンドになりました。

インスタンス -連絡するセクションのチャートを示します

タイプ -df_complex-used - df_complexは常に必要です。ダッシュの後、この場合、データは使用された場所で検索されます。

テーブルにはフィールドが1つしかないため、 DataSourceを省略できます。

WarningMax / FailureMax-残念ながら、何らかの未知の理由により、このプラグインにパーセンテージデータを使用することは不可能であるため、各ホストに対して特定の値でこのプラグインをハンマーで打つ必要があります。 また、以下ではパーセンテージを使用しないことを明確に示しています。 これに関する質問は2011年とバージョン4.9.1に現れましたが、それに対する答えはまだありません。



基本的に、メインプラグインはすべて構成されており、通知も行われます。



提案、提案、質問は大歓迎です。 できる限りお答えします。






All Articles