ふう…しばらくRiakの検証記事書いてきたけど、一旦これで最後かな。新しい分散データベースを検証しようと思ってたところにちょうどRiakの話を聞く機会があって、ちょっとやってみようとかと思った。で、検証したことを書ける範囲で自分のブログに落としてきた。脳内の情報を構造化して文章に落とし込むってのは大変だけど理解を深めるには良い。自分自身が運用寄りのポジションにいるということもあって、運用に必要そうなポイントを中心に進めてきたんだけど、まぁ、とりあえずどこぞに野良Riakが構築されてもなんとか運用できるだろう…。きっと…。
各種クライアントライブラリの相性であったり、Linksを使ったグラフDB的な使い方、データ設計などについては大した吟味はしていない。まぁ、単純なKey=valueを大量に格納するには良いんじゃないかな。スケールするしシングルポイントもないし。やっぱデータの持たせ方と取回し方が肝だよね。なんでも入るからといって、本当になんでもかんでも入れると非道いことになるってのはNoSQLに親しんだ人ならわかると思うけど。あるソフトウェアに、そのソフトウェアのもつコンセプト以上のことを求めようとすると一工夫要る。逆に言うと工夫すればどうにかなるとも言える。ハックするのがテクニックだと言う人もいれば、無駄なことをしないのがテクニックだと言う人もいる。
軽くボヤキが入ったところで、さて…監視というと統計情報の可視化と閾値超えの検知とその通知。それらについて記述する。あと、おまけとしてRiak備え付けのツールであるRiak Controlについて。


1. 統計情報の取得

http://docs.basho.com/riak/latest/cookbooks/Statistics-and-Monitoring/

例によって公式ドキュメントにまとまっている。ポイントだと思うところをかいつまんでみると、統計情報は http://xxx.xxx.xxx.xxx:8098/stats もしくはriak-admin statusコマンドで取得できる。何をどうしていいかわからないくらい大量の情報が得られるんだが、httpで叩くかコマンドを叩くことによって簡単に必要な数値を可視化することができる。

  • node_gets: 1分間にこのノードがgetを受けた数。他ノードのコーディネータになったときもカウントされる。
  • vnode_gets: 1分間にこのノードがからデータがgetされた数。
getsをputsにかえればputsの処理数が取得できる。あとはread_repair、Protocol Buffersのコネクション数、Erlangのメモリ使用量くらいを取っておけばいいんじゃないかと思う。まあこのへん実際にプロダクションで運用始まってみないとわからんのだけどね。もっとこういう情報も見ておくべきってのが出てくると思う。

そうそう…超やっつけでmunin-plugin作った…https://github.com/hiroakis/munin-riak

2. 閾値監視

このへんはRiakの統計もそうだけど、OSやハードウェアの状態を見るのが良いだろう。

http://docs.basho.com/riak/latest/cookbooks/best-practices/

ディスク容量、ディスクIO、CPU、ネットワークIO…といったものを監視して適宜アラートを飛ばせば良いということは言わずもがななんだけど、上記公式マニュアルによると次の通りアドバイスされている。
  • ディスク
    • ディスク容量80%
  • ディスクIO
    • 90%(iostatのutil % が90%以下ってことかな?)
  • CPU
    • RiakのプロセスのCPU使用率が30%であること
  • ネットワーク
    • 最大キャパの20%
これらを超えるようであれば、ディスク追加やノード追加を行う。ちなみに、Erlangのメモリ使用量が物理メモリを超えたらOOMで死ぬので、そこも見ておいた方がいいかもね。おれ環境だと、3ノード程度のクラスタである特定のノード狙い撃ちでputしまくったらそのノードがOOMで死んだ…。

3. Riak Control

RiakにはRiak Controlという管理コンソールもどきがついている。Riak Controlを使用するには、クラスタ内のどれか1ノードのapp.configに次のような設定をいれておく必要がある。

1
2
3
4
5
6
7
8
9
10
{https, [{ "0.0.0.0", 8069 }]},

{ssl, [
{certfile, "/etc/riak/cert.pem"},
{keyfile, "/etc/riak/key.pem"}
]},

{riak_control, [
%% Set to false to disable the admin panel.
{enabled, true},

で、オレオレ証明書を作成して/etc/riak/cert.pem, key.pemに配置してRiakを再起動。そして https://xxx.xxx.xxx.xxx:8069/admin にアクセスしてid/pass = user/passを入力。id/passは、{user list, [{“user”, “pass”}]},で定義されている。次のような画面が表示される。

riak_control

正直、あまり有用な使い方が思いつかない。riak-adminコマンドで見れる情報がGUIでも見れるよ、と。

以上。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">

Set your Twitter account name in your settings to use the TwitterBar Section.