これは何ですか
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.1 、
debian 、タンバリンとのいくつかのダンス
-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
設定からわかるように、「拡張子」が
アクティブなファイルのみを接続します
JFYIすべてのプラグインパラメータは、
collectd.confドキュメント
ページにあります。 さらに、
confディレクトリには2つのファイルが含まれています。1つは
notify_emailプラグインを構成するためのもので、もう1つは
rrdtool設定用
です gen-collectd-master collectd
一般に、それらは
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"] ..
以下はスクリプトに書かれています
通知中のログには、次のようなものがあります
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に現れましたが、それに対する答えはまだありません。
基本的に、メインプラグインはすべて構成されており、通知も行われます。
提案、提案、質問は大歓迎です。 できる限りお答えします。