名称 rrdtool create - 新しいラウンドロビンデータベースを作成します。 ------------------------------------------------------------------------------- 書式(訳注:見やすさのため適宣改行しています) rrdtool create ファイル名 [ --start | -b 開始時刻 ] [ --step | -s ステップ ] [ DS:データソース名:データソースタイプ:最大許容間隔:最小値:最大値 ] [ RRA:統合関数:未定義値許容率:ステップ:データ数 ] ------------------------------------------------------------------------------- 解説 rrdtoolのcreate機能は新しいラウンドロビンデータベース(RRD)ファイルを 作成します。作成されたファイルはデータを全て格納できるサイズであり *UNKNOWN*で初期化されています。 ファイル名 作成するRRDの名前。RRDファイルの拡張子は.rrdとするべきだがrrdtoolは どんなファイル名でも受け付けます。 --start | -b 開始時刻(デフォルトは現在時刻の10秒前) 最初の値がRRDに追加される時刻を1970-01-01 UTCからの経過秒数で指定します。 rrdtoolはこの時刻より前のデータは受け付けません。 別の時刻の指定法についてはrrdfetchマニュアルの「AT形式時刻指定法」も 参照してください。 --step | -s ステップ(デフォルトは300秒) RRDへデータが追加される基本間隔[s]を指定します。 DS:データソース名:データソースタイプ:最大許容間隔:最小値:最大値: 1つのRRDは複数のデータソース(DS)からの入力を受け付けます (例:ある回線の受信量と送信量)。DSオプションではRRDに格納したい 各データソースの基本的な属性を定義します。 「データソース名」はこのデータソースをRRDから参照するのに用いる名前です。 データソース名は1〜19文字の[a-zA-Z0-9_]で構成されていなければなりません。 「データソースタイプ」はデータソースタイプを指定します。タイプの選択に ついては「測定法」セクションを見て下さい。データソースタイプは以下の いずれかである必要があります。 GAUGE 温度や、部屋内の人の数や、レッドハットのシェアのようなものに用います。 COUNTER ルータの入力バイト数のような連続して増加するカウンターに用います。 COUNTERデータソースはカウンターがオーバーフローした場合を除いて 減少しないものと仮定されます。update機能ではオーバーフローが 考慮されます。カウンター値は毎秒当たりの値として記録されます。 カウンターがオーバーフローした場合rrdtoolはオーバーフローが32bit境界で 起きたのか64bit境界で起きたのかを判断しそれに応じて適切な値を足します。 DERIVE 前回のデータソースの値から今回のデータソースの値へ引いた線の傾きを 格納します。これは例えば単位時間当たりの入退室する人数のような増減する 値に対して有用です。内部的にはDERIVEはオーバーフローをチェックしないと いう点を除いてCOUNTERと同じです。そのため32bitまたは64bit境界以外で リセットされるカウンターに対して「最小値」を0に設定するのと組み合わせて DERIVEを使うことができます。 ABSOLUTE データ取得時にリセットされるようなカウンターのためのものです。これは オーバーフローがよく起こる回転の速いカウンターに対して用いられます。 そのため単にデータを取得するのではなく取得するごとにリセットし、 次のオーバーフローまでに最大の時間余裕があるようにします。もう一つの 用途としては前回のupdateからのメッセージの数をカウントするのに 用います。 「最大許容間隔」はこのデータソースの値が*UNKNOWN*であると仮定されない ための、あるupdateとその次のupdateの間の最大の秒数です。 「最小値」と「最大値」はオプションの設定です。データソースから供給される データの予想される範囲を指定します。もしこれらが設定されていて値が その範囲の外であった場合、*UNKNOWN*であるとみなされます。最小値や最大値が わからない、もしくは必要ない場合は不明の意味の「U」を設定してください。 注:「最小値」と「最大値」は常にDSの値を処理した後に参照されます。 トラフィックのようなCOUNTERタイプのDSではデータレートの最大及び最小は デバイスから推測できます。 もし最小値または最大値がわかるのであれば、常に「最小値」「最大値」を 設定してください。これらはupdate時のrrdtoolの単純整合性チェックを 補助してくれます。 RRA:統合関数:未定義値許容率:ステップ:データ数 RRDの目的はデータをラウンドロビンアーカイブ(RRA)に格納することです。 1つのアーカイブは全ての定義済みデータソース(DS)のデータ値から構成され、 RRAオプションによって定義されます。 データがRRDに格納されるときは、まず -s オプションによって定義された 時間幅に合わせて調整されます。この調整された値を基準データと呼びます。 またデータはアーカイブの「統合関数」(CF)を用いて統合化されます。 次の統合関数が定義されています:AVERAGE、MIN、MAX、LAST 「未定義値許容率」は統合値に含まれる*UNKNOWN*値の割合がどれだけ以下なら 統合値を非未定義値とみなすかを定義します。 「ステップ」はアーカイブに格納する統合化データをいくつの基準データを 使って構成するかを定義します。 「データ数」はいくつのデータ値をRRAに保持するかを定義します。 ------------------------------------------------------------------------------- 最大許容間隔とステップ このセクションはDan Baardaによるrrdtoolの内部動作説明です。これを読めば どうしてあなたのデータベースで*UNKNOWN*が増殖しているかがわかるでしょう。 RRDには任意の時間にデータを送ることができます。送られたデータは正確に 各「ステップ」間隔ごとの基準データ(PDP)を構成します。その後PDPはRRAに 格納されます 「最大許容間隔」はデータ取得間隔の許容最大値を定義します。データ取得間隔が 最大許容間隔より短ければ平均レートが計算され取得区間の値とされます。 データ取得間隔が最大許容間隔より長い場合その区間全体は*UNKNOWN*であると みなされます。注:これ以外にも値が設定範囲を超えたなどの理由により区間値や ある点の値が*UNKNOWN*となることがあります。 PDPの「ステップ」区間内の非未定義値はPDPの平均値を求めるのに使われます。 一方「ステップ」区間内の未定義区間の合計長が「最大許容間隔」より長ければ PDPは全体が*UNKNOWN*であるとみなされます。これはあるPDPの「ステップ」区間が 未定義値と非未定義値を含む場合、未定義区間の和が「最大許容間隔」より長いと PDP全体が*UNKNOWN*とみなされるということです。つまり「最大許容間隔」は データを受け入れる最大間隔であるだけでなく、各PDP毎の未定義区間の合計の 許容最大値でもあるわけです(当たり前ですが、これは「最大許容間隔」が 「ステップ」より短い場合のみ起こりえます)。 「最大許容間隔」はPDPの「ステップ」間隔より短く(まれ)も、長く(通常)も できます。短い「最大許容間隔」ではPDPが*UNKNOWN*とならないためには各PDP毎に 複数回のデータ取得を行う必要があります。長い「最大許容間隔」では複数の 「ステップ」をまとめることができます。つまり、1回の取得データから複数の PDPを算出させることができます。極端な例を挙げると、「ステップ」を5分に、 「最大許容間隔」を1日にして1日に1回データ取得すると、その日1日分のPDPが 同じ平均値になります。- Don Baarda ------------------------------------------------------------------------------- 測定法 データ測定の際のヒントを幾つか述べます。 温度 普通、温度センサから得られる値にはいくつかのタイプがあります。温度の測定は 時間とは直接的な関係はありません。唯一温度の取得が行われるタイミングが 時間に関係するのみです。このようなタイプのデータソースにはGAUGEが 利用できます。rrdtoolは単に時刻と共に値を記録します。 メールメッセージ ある時間の間にメールサーバーから転送されたメールの数をカウントする方法が あって、それが「最近65秒間の間に5通」のような出力をするとします。 この場合はABSOLUTEタイプを使い、単にこの5という値とカウントの終了時刻で RRDをupdateするだけです。そうすればrrdtoolは毎秒当たりのメール数を 記録します。後になって1日に転送されたメールの総数を知りたくなったら、 rrdtoolからその日の毎秒当たりの平均メール数を取得して1日の秒数を かければよいのです。全ての計算は倍精度で行われますから、精度は 十分でしょう。 常に割合です rrdtoolはCOUNTER、DERIVE、ABSOLUTEデータを毎秒当たりの量として割合で 記録しています。データをプロットしようとするとy軸は毎秒当たりの量として 表示されるでしょう。各点の時間幅をかけて純粋な量に変換しようとするかも しれません。rrdtoolは連続したデータをプロットするため、ルーターが 送受信した「合計byte」のような純粋な量をプロットするのには適していません。 このような事をやりたいのであれば、例えば毎時間当たりのbyte量のように 変換してプロットするか、他のツールを使ってグラフ上の各点の時間幅が明らかな 棒グラフとしてプロットしてください(例えばy軸がGBで、x軸が日にちに なっていて各日毎に一つのバーがあるようなグラフです)。 ------------------------------------------------------------------------------- 例 rrdtool create temperature.rrd \ --step 300 \ DS:temp:GAUGE:600:-273:5000 \ RRA:AVERAGE:0.5:1:1200 \ RRA:MIN:0.5:12:2400 \ RRA:MAX:0.5:12:2400 \ RRA:AVERAGE:0.5:12:2400 この例はファイル名がtemperature.rrdで、300秒毎に1つの温度を受け取るRRDを 作成します。600秒以上の間データが追加されないと温度の値は*UNKNOWN*に なります。受け入れる最小値は-273で最大値は5000です。 同様にいくつかのアーカイブも定義されています。1つ目は100時間分 (1200×300秒=100時間)のデータを格納します。2つ目のRRAは1時間 (12×300秒=1時間)のうちの最低温度を100日分(2400時間)格納します。 3つ目と4つ目のRRAは同じ事をそれぞれ最大温度と平均温度に対して行っています。 ------------------------------------------------------------------------------- 著者 Tobias Oetiker