SlideShare a Scribd company logo
1 of 39
Download to read offline
RRDTool基礎から応用
株式会社はてな
システムプラットホーム部
id:shoichimasuhara
■自己紹介
●

id:shoichimasuhara

●

Twitter:@shoichimasuhara

●

所属:株式会社はてな システムプラットホーム部

●

経歴
●
●
●
●

塾講師
陸上自衛官
鯖管 (レンサバ)
はてなインフラ (イマココ)
RRDTool基礎
■RRDToolって?
●

●

RRD(Round Robin Database)を操作するためのツール (そのま
まですね)
今回はTobias Oetikerさんのrrdtool 1.4.7 について話します
http://oss.oetiker.ch/rrdtool/

●

大雑把に言うと、ラウンドロビンデータベースを
●

作って(rrdtool create)

●

更新して(rrdtool update)

グラフを書く(rrdtool graph)
ためのものです
●
■RRD(Round Robin Database)って?
●

データサイズの変わらないただ一つでもないデータベース

●

ラウンドロビン方式でデータが格納されます

●

古いものは期限が来ると破棄されます

●

rrdtoolにおけるRRDは基本的に時系列データを蓄積します
■RRD(Round Robin Database)って?
●

イメージするなら円形状のデータストア

データを順番に
入れていく
■RRD(Round Robin Database)って?
●

イメージするなら円形状のデータストア

1周したら
古いデータを破棄
■RRDの作成
●

rrdtool create を使います

●

コマンドはこんな感じ

rrdtool create ファイル名 オプション スキーマ定義
●

オプションには
--start 初期時刻
--step 更新間隔 (先ほどの輪の小さい丸の間隔)
などがあります
■スキーマ定義
●

DS (Data Source)
●

MySQLでいう所のカラム定義

DS:DS名:DSタイプ:ハートビート:最小値:最大値 で定義
●
DSタイプはGAUGE,COUNTER,DERIVE,ABSOLUTEのどれか
●
ハートビートは有効更新間隔
RRA (Round Robin Archives)
●

●

●
●
●
●
●
●

データサイズを決めるようなもの

RRA:RRAタイプ:xff:ステップ数:行数 で定義
データ保存期間は ステップ秒数*ステップ数*行数
RRAタイプはAVERAGE,MIN,MAX,LASTのどれか
全DSで共通
複数定義できる
■作成サンプル
rrdtool create test.rrd 
--start 1385765991 
--step 300 
DS:value1:600:0:1000 
DS:value2:600:0:1000 
RRA:AVERAGE:0.5:1:864 
RRA:AVERAGE:0.5:12:2016
■RRDの更新
●

●

rrdtool update を使います
(実は微妙に奥が深かったりしますが) ここでは単純に
タイムスタンプ:値:値:値... をぶち込むだけ

rrdtool update ファイル名 1385766415:10:20
■グラフの描画
●

rrdtool graph を使います

●

rrdtool の中で一番複雑

rrdtool graph 出力画像ファイル名 オプション グラフ定義
●

詳しく説明すると日がくれるのでとりあえず例
■グラフサンプル
●

このコマンドを実行するとこんなグラフがかけます
rrdtool graph test.png 
--start 1384614000 
--end
1385218800 
DEF:value1=test.rrd:value1:AVERAGE 
DEF:value2=test.rrd:value2:AVERAGE 
AREA:value1#00FF00 
LINE1:value2#FF0000
■DEFとCDEFとVDEFについて
●

DEF (data definition)
データソースからデータを定義します (時系列データ)

●

CDEF (data calculation)
他の時系列データから計算をして新しい時系列データを定
義します (時系列データ)

●

VDEF (variable definition)
時系列データなどからひとつの値を定義します(値)
RRDTool応用
■グラフの比較
●

先ほどのグラフのvalue1 > value2 の領域を可視化したい

●

2行追加するとできます

rrdtool graph test.png 
--start 1384614000 
--end
1385218800 
DEF:value1=test.rrd:value1:AVERAGE 
DEF:value2=test.rrd:value2:AVERAGE 
CDEF:value3=value1,value2,GT,INF,* 
AREA:value3#FFDDDD 
LINE2:value1#00FF00 
LINE1:value2#FF0000
■グラフの比較
●

先ほどのグラフのvalue1 > value2 の領域を可視化したい

●

2行追加するとできます

rrdtool graph test.png 
--start 1384614000 
--end
1385218800 
DEF:value1=test.rrd:value1:AVERAGE 
DEF:value2=test.rrd:value2:AVERAGE 
CDEF:value3=value1,value2,GT,INF,* 
AREA:value3#FFDDDD 
LINE2:value1#00FF00 
LINE1:value2#FF0000
■ちょっと説明
●

CDEF:value3=value1,value2,GT,INF,*

●

何やってるの?
●
●
●

value1 と
value2 を
GT ( > ) で比較して

●

INF(無限大特殊変数) を

●

* (かけ) た
■移動平均線を描いてみる
●

TRENDを使います

●

1日移動平均線の定義だとこんな感じ

CDEF:value2=value1,86400,TREND
■移動平均線を描いてみる
●

TRENDを使います

●

1日移動平均線の定義だとこんな感じ

CDEF:value2=value1,86400,TREND

簡単便利
■過去のグラフとの重ね合わせ
●

SHIFTを使います

●

CDEF:value2=value1 CDEFで一度違う変数に渡して

●

SHIFT:value2:86400 ずらします
■過去のグラフとの重ね合わせ
●

SHIFTを使います

●

CDEF:value2=value1 CDEFで一度違う変数に渡して

●

SHIFT:value2:86400 ずらします

●

例では1日ずらしただけですが、一週間前のグラフを表示する
と異常がわかりやすくて便利です
■最小二乗法による線形予測
●

LSL(Least Squares Line)機能を使います
●

データから y=ax+b の形を求める

●

LSLSLOPE で a (傾き)を

●
●

LSLINT で b (切片)を求めて
CDEFで直線の時系列データを定義します
■最小二乗法による線形予測
rrdtool graph test.png 
--start 1384614000 
--end
1385218800 
DEF:value1=test.rrd:value1:AVERAGE 
VDEF:a=value1,LSLSLOPE 
VDEF:b=value1,LSLINT 
CDEF:value2=value1,POP,a,COUNT,*,b,+ 
AREA:value1#00FF00 
LINE1:value2#FF0000 

# 傾き
# 切片
# スミマセンこれ良くわかってない・・
■最小二乗法による線形予測
rrdtool graph test.png 
--start 1384614000 
--end
1385218800 
DEF:value1=test.rrd:value1:AVERAGE 
VDEF:a=value1,LSLSLOPE 
VDEF:b=value1,LSLINT 
CDEF:value2=value1,POP,a,COUNT,*,b,+ 
AREA:value1#00FF00 
LINE1:value2#FF0000 

# 傾き
# 切片
# スミマセンこれ良くわかってない・・
■最小二乗法による線形予測
rrdtool graph test.png 
--start 1384614000 
--end
1385218800 
DEF:value1=test.rrd:value1:AVERAGE 
VDEF:a=value1,LSLSLOPE 
VDEF:b=value1,LSLINT 
CDEF:value2=value1,POP,a,COUNT,*,b,+ 
AREA:value1#00FF00 
LINE1:value2#FF0000 
hrule(横線)を引くとなお見やすくなります
(交点を求めることもできますが今回は割愛)

# 傾き
# 切片
# スミマセンこれ良くわかってない・・
■曲線予測
●

PREDICTを使います
CDEF:trend=value1,3600,TREND 移動平均を求めて
CDEF:value2=86400,-8,3600,trend,PREDICT PREDICTに突っ込
む
■曲線予測
rrdtool graph test.png 
--start 1384614000 
--end
1385218800 
DEF:value1=test.rrd:value1:AVERAGE 
CDEF:trend=value1,3600,TREND 
CDEF:value2=86400,-8,3600,trend,PREDICT 
AREA:value1#00FF00 
LINE1:value2#FF0000
■曲線予測
rrdtool graph test.png 
--start 1384614000 
--end
1385218800 
DEF:value1=test.rrd:value1:AVERAGE 
CDEF:trend=value1,3600,TREND 
CDEF:value2=86400,-8,3600,trend,PREDICT 
AREA:value1#00FF00 
LINE1:value2#FF0000 

こんなグラフが出ます
■もう少しマシな予測
●

●

●

●

指数平滑法のうち季節周期も考慮してくれる Holt-Winters が
使えます
ただしgraph定義だけではダメで、createする時点から設定が
必要
正直良くわからないので使ったことは無いです
詳しくはこちら
http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html
RRDToolのおまけ
■rrdcached
●

●

●

●

rrdtoolをインストールすると付録でついて来ます
unix socket またはネットワーク越しでrrdtoolが操作できる
デーモン
本来は高頻度のupdateに耐えるためのcacheサーバ
今時SSDだしストレージの書き込み速いしそんなに要らないよ
うな
■rrdcached
●

ドキュメントに
●

create

●

update

graph
などが使えるように書いてるけど使えなかった (1.4.4)
●

●

そこで rrdtool user ML に質問投げてみたら
■rrdcached

trunk versionじゃないとと動かないよそれHAHAHA
■rrdcached

って返事が返ってきた
■rrdcached

マジか
■rrdcached

そんなもんwebのドキュメントに載せんな
■まとめ
●

rrdtool、多機能すぎてお腹いっぱい

●

頑張って使えばいろいろ出来そう

●

コマンド叩くのはツライのである程度決め打ちで出来れば便利

●

予測機能を使っていきたい
ご清聴ありがとうございました

More Related Content

What's hot

What's hot (20)

え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
ビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年versionビッグデータ処理データベースの全体像と使い分け
2018年version
ビッグデータ処理データベースの全体像と使い分け
2018年version
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
 
Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版Dockerfileを改善するためのBest Practice 2019年版
Dockerfileを改善するためのBest Practice 2019年版
 
サイバージェント 秋葉原ラボのHBase 活用事例
サイバージェント 秋葉原ラボのHBase 活用事例サイバージェント 秋葉原ラボのHBase 活用事例
サイバージェント 秋葉原ラボのHBase 活用事例
 
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
分析指向データレイク実現の次の一手 ~Delta Lake、なにそれおいしいの?~(NTTデータ テクノロジーカンファレンス 2020 発表資料)
 
事例で学ぶApache Cassandra
事例で学ぶApache Cassandra事例で学ぶApache Cassandra
事例で学ぶApache Cassandra
 
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
Apache Kafkaって本当に大丈夫?~故障検証のオーバービューと興味深い挙動の紹介~
 
Presto on YARNの導入・運用
Presto on YARNの導入・運用Presto on YARNの導入・運用
Presto on YARNの導入・運用
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
 
PL/Pythonで独自の集約関数を作ってみる
PL/Pythonで独自の集約関数を作ってみるPL/Pythonで独自の集約関数を作ってみる
PL/Pythonで独自の集約関数を作ってみる
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
webエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのrediswebエンジニアのためのはじめてのredis
webエンジニアのためのはじめてのredis
 
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
速習!論理レプリケーション ~基礎から最新動向まで~(PostgreSQL Conference Japan 2022 発表資料)
 
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法  ※講演は翻訳資料にて行います。 - Getting the Best...
PySparkによるジョブを、より速く、よりスケーラブルに実行するための最善の方法 ※講演は翻訳資料にて行います。 - Getting the Best...
 
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
大量のデータ処理や分析に使えるOSS Apache Sparkのご紹介(Open Source Conference 2020 Online/Kyoto ...
 
NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例NetflixにおけるPresto/Spark活用事例
NetflixにおけるPresto/Spark活用事例
 

Viewers also liked

Viewers also liked (10)

ZabbixによるOpenStack監視のご紹介
ZabbixによるOpenStack監視のご紹介ZabbixによるOpenStack監視のご紹介
ZabbixによるOpenStack監視のご紹介
 
仮想化専門コンサルタントが教える「成功するエンタープライズクラウド環境構のポイント」
仮想化専門コンサルタントが教える「成功するエンタープライズクラウド環境構のポイント」仮想化専門コンサルタントが教える「成功するエンタープライズクラウド環境構のポイント」
仮想化専門コンサルタントが教える「成功するエンタープライズクラウド環境構のポイント」
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
 
Mackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LT
 
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTGazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
 
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
 
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
 
メルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてメルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えて
 
Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Big Master Data PHP BLT #1
Big Master Data PHP BLT #1
 

Similar to Rrdtool基礎から応用

10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
Nobuaki Oshiro
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
Nobuaki Oshiro
 
るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。
Sho Hashimoto
 

Similar to Rrdtool基礎から応用 (16)

RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)RStudioでRをはじめよう(R for Beginner using RStudio)
RStudioでRをはじめよう(R for Beginner using RStudio)
 
Tokyo r no8_海外サイトの紹介
Tokyo r no8_海外サイトの紹介Tokyo r no8_海外サイトの紹介
Tokyo r no8_海外サイトの紹介
 
Analytics Environment
Analytics EnvironmentAnalytics Environment
Analytics Environment
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 
10min r study_tokyor25
10min r study_tokyor2510min r study_tokyor25
10min r study_tokyor25
 
C ai p3_jp_no3v1.0
C ai p3_jp_no3v1.0C ai p3_jp_no3v1.0
C ai p3_jp_no3v1.0
 
Tokyo r50 beginner_2
Tokyo r50 beginner_2Tokyo r50 beginner_2
Tokyo r50 beginner_2
 
Tokyo r25 hiro_macchan
Tokyo r25 hiro_macchanTokyo r25 hiro_macchan
Tokyo r25 hiro_macchan
 
るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。るりまの1/nはMatsue.rbでできています。
るりまの1/nはMatsue.rbでできています。
 
V6 unix in okinawa
V6 unix in okinawaV6 unix in okinawa
V6 unix in okinawa
 
Kandai.R #1 公開用
Kandai.R #1 公開用Kandai.R #1 公開用
Kandai.R #1 公開用
 
Tokyo r30 beginner
Tokyo r30 beginnerTokyo r30 beginner
Tokyo r30 beginner
 
ソーシャルゲームを支える技術 ~ クラウドを活用した高負荷対策
ソーシャルゲームを支える技術 ~ クラウドを活用した高負荷対策ソーシャルゲームを支える技術 ~ クラウドを活用した高負荷対策
ソーシャルゲームを支える技術 ~ クラウドを活用した高負荷対策
 
Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)
Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)
Twitterのフォロワの増減がわたし…、 気になります! (OSC 2012 広島, Hiroshima.rb)
 
Tokyo r38
Tokyo r38Tokyo r38
Tokyo r38
 
RESTとRailsスタイル
RESTとRailsスタイルRESTとRailsスタイル
RESTとRailsスタイル
 

Rrdtool基礎から応用