RRDtool

RRDtool

RRDtoolとは、RRD(Round Robin Database)にデータを格納し、
それをグラフ化するツールのこと。
最初にcreateで箱を作成し、定期的にupdateでデータを入れていき、graphで作成する。
rrdはファイル=DBのこと。一度作ったらファイルサイズは変わらず、古いデータから消していく。
データは基本的に時系列のデータ。

rrdtoolのインストール

  • 「yum -y install --enablerepo=rpmforge-extras rrdtool」をうつ
  • 最新版は自分でやる必要がある

rrdtool create

RRDファイルの作成

rrdtool create
 filename 
 [--start|-b start time]
 [--step|-s step]
 [DS:ds-name:DST:dst arguments]
 [RRA:CF:cf arguments]
  • filename:作成するrrdファイル名
  • --start:最初のデータの時刻をUNIX時間の秒単位で指定。(デフォルトは現在時刻の10秒前)
  • --step:データが追加される間隔を秒単位で指定。(デフォルトは300秒)
  • DS:データソース。グラフの1つの線になる要素で複数定義可能

    • ds-name:データソース名。1字~19字[a-zA-Z0-9_]
    • DST:データソースタイプ。以下のどれか
      • GAUGE:取得した値をそのまま記録
      • COUNTER:前回の記録に加算していく
      • DERIVE:前回との差を記録していく
      • DCOUNTER:倍精度浮動小数点数のCOUNTER
      • DDERIVE:倍精度浮動小数点数のDERIVE
      • ABSOLUTE:0でリセット
      • COMPUTE:逆ポーランド記法で記録
    • dst arguments:heartbeat:min:maxか、rpn-expression
      • heartbeat:指定時間内にデータが取れなければ、Unknown扱いとする
      • min、max:データの最小値、最大値。不明はU
      • rpn-expression:逆ポーランド記法の数式
  • RRA:RRA(round robin archives)に格納するデータの種類や数

    • CF:集約関数:AVERAGE=平均、MIN=最小、MAX=最大、LAST=最後、のどれか
    • cf arguments:xff=未定義値許容率、steps=ステップ、rows=データ数
      • xff:0から1の範囲(小数点OK)で、データ全体の何割がUNKNOWNだったら、UNKNOWNにする、という設定
      • steps:集約関数で統合するステップ数(例:1分ごと、5ステップなら5分平均をだす)
      • rows:上記ステップを保存する数

rrdtool update

RRDファイルにデータを更新

rrdtool {update | updatev}
 filename
 [--template|-t ds-name[:ds-name]...]
 [--skip-past-updates|-s]
 [--daemon|-d address]
 [--] N:value[:value]... timestamp:value[:value]... at-timestamp@value[:value]...
  • filename:更新するRRDファイル
  • --template データソース名・・・:データソースの並び順を指定
  • --skip past-updates:最新更新より前のデータだった場合にエラーではなく自動的にスキップする
  • --daemon アドレス:rrdcachedデーモンのアドレス
  • {N | timestamp}:value[:value]:更新時刻と値を指定。Nは現在時刻。

rrdtool graph

グラフ作成

rrdtool graph|graphv
 filename
 [option ...]
 [data definition ...]
 [data calculation ...]
 [variable definition ...]
 [graph element ...]
 [print element ...]
  • filename:画像ファイル名(png、svg、eps)
  • DEF:vname=RRDファイルパス:ds名:CF:グラフの線1本分。vnameは他の指定で使う変数
  • LINE1:vname#色指定:"凡例名":グラフに出すラインの情報。LINE1~LINE9の数字が大きくなると線が太くなる
  • AREA:vname#色指定:"凡例名":グラフに出す面グラフの情報
  • STACK:LINEやAREAの最後に[:STACK]を指定すると前の要素の積み上げになる
  • CDEF:vname=RPN式:データを計算して新しい時系列データを作る
  • VDEF:vname=RPN式:値か時刻どちらかのデータ。変数用みたいなもん
  • SHIFT:vname:時間:指定した時間分、グラフをずらす
  • HRULE:値#色指定:"凡例名":線のスタイル:水平線をグラフに書く
  • VRULE:値#色指定:"凡例名":線のスタイル:垂直線をグラフに書く
  • GPRINT:vname:CF:”文字列 %lf”:凡例部分に値表示
  • COMMENT:テキスト:文字列表示
  • テキスト装飾:\r、\l、\cは文字寄せ、\tはタブ
  • #RRGGBBAA:色指定は透明色が指定可能

  • RPN式:TREND:移動平均線。1日移動平均線は、「CDEF:v2=v1,86400,TREND」

  • RPN式:POP:前の値を取り出す=削除

  • RPN式:COUNT:1番目のデータは1、2番目のデータは2・・・

  • RPN式:PREDICT:うまいこと使うと、曲線をシフトして将来予測の曲線を引ける

  • --start 時刻:グラフ開始タイムスタンプ。「end-1d」1w、1hとかでも良い

  • --end 時刻:グラフ終了タイムスタンプ

  • --imgformat 画像形式:グラフの画像形式。PNGなどが指定可能

  • --title 文字列:グラフタイトル(英語)

  • --vertical-label 文字列:縦軸ラベル(英語)

  • --width ピクセル、--height ピクセル:画像の幅、高さ

  • --upper-limit 値、--lower-limit 値:Y軸の上限、下限

  • --color 場所色:色の指定。背景なら、BACK#000000で良い

rrdtool fetch

RRDファイルの中身を表示

rrdtool fetch RRDファイル名 CF(LAST等)
  • デフォルトは1日分のデータを取得

rrdtool info

RRDファイルのヘッダ情報を表示

rrdtool info RRDファイル名

rrdtool dump

RRDファイルをXML形式で出力

rrdtool dump RRDファイル名

rrdtool first

RRDファイルの最初にデータ入力したタイムスタンプを表示

rrdtool first RRDファイル名

rrdtool last

RRDファイルの最後=最新のタイムスタンプを表示

rrdtool last RRDファイル名

rrdtool lastupdate

RRDファイルの最後=最新の「タイムスタンプ:値」を表示

rrdtool lastupdate RRDファイル名

rrdtool resize

RRDファイルのRRA行数を変更
実行後は、元ファイルは変更されず、resize.rrdというファイルに出力される

rrdtool resize RRDファイル名 rra-num GROW|SHRINK 増やす・減らす行数

rra-numは、RRAのインデックス。rrdtool infoをやればわかる

rrdtool restore

XMLファイルからRRDファイルに復元

rrdtool restore XMLファイル名 RRDファイル名

rrdtool tune

RRDファイルのヘッダ領域の構成の一部を変更する

rrdtool rdos

libradosを利用し、CephクラスタからRRDファイルを操作する

rrdtool xport

RRDファイルを指定したXML形式で出力(グラフ出力に似た形式)

rrdcgi

非コマンド。HTMLに特殊なタグを埋め込むことで、Webページにグラフを出せる