運用を見える化することでDevOpsを前進させよう(後編)~DevOps Day Tokyo 2013

2013年10月1日

世界中でDevOpsのムーブメントを広げているイベントDevOps Daysが今年も東京で「DevOps Day Tokyo 2013」として9月28日に都内で開催されました。

(本記事は「運用を見える化することでDevOpsを前進させよう(前編)~DevOps Day Tokyo 2013」の続きです)

自分1人で、1台のマシンで1日でデータを公開してみる

fig

今日は「1台、1日、1人」で運用データの公開をしてみるというチャレンジをしたいと思います。

すべてのメトリクスをまとめて、自動的にデータを共有できるようにし、自分は手間がかからないように自動化してみましょう。

fig

使うのはGraphiteというツールです。RRDtoolやGanglia、Cactiなどに似ています。

ドキュメントは貧弱だったりしますが、エコシステムはすばらしいと思います。入出力が簡単で、REST APIで簡単にグラフを作ることができるため、マッシュアップしたりダッシュボードのUIを作りやすく、サードパーティのツールもそろっています。

Graphiteで作ったグラフはURLを伝えるだけで共有できるので、HTMLで簡単にダッシュボードを作れます。

fig

Graphiteはマシンが1台あれば、50台以上のマシンから取得した数千のメトリクスを処理できるでしょう。CPUインテンシブというよりも、メモリと速いディスクがあるほうがよいです。

インストールは難しくありませんが、コンフィグファイルがやや複雑です。

メトリクスは、/proc、ps、df、netstatなどを利用できます。briteco

fig

こうした作業は1日もかからずにでき、誰にでも、共有できる運用メトリクスを用意することができると思います。

運用側のメトリクスは用意できるとして、アプリケーションやビジネスのメトリクスはどうすればいいでしょう。

StatsDでアプリケーションのログをとる

StatsDというツールがあります。これは私がEtsyにいるころに構築されたものです。イベントがリアルタイムにStatsDに配信されると、StatsDがデータを収集し、時系列に統計データとして計算してくれ、1分ごとにGraphiteに書き込んでいきます。

fig

StatsDはUDPを活用します。メトリクスはUDPの中に入れられるのです。UDPはネットワークを過負荷にすることもなく、存在しないサーバにパケットを送ったとしても問題を起こしません。

つまり、どのアプリケーションであってもこの機能を安全に追加できる、ということです。

fig

ユーザーがサービスにログインするデータのログをとるには、StatsDのコンフィグレーションファイルに1行追加するだけで済みます。

ユーザーのログインは高頻度で発生するイベントですが、低頻度のイベントもグラフ化できます。それもスクリプトに1行追加するだけです。低頻度のイベントとは、マシンのリブート、インストール、コアダンプ、クラッシュといったデータが該当するでしょう。

メトリクスの収集をデプロイのプロセスに入れるとこういう構成図になります。サーバが複数あり、誰かがログインすると StatsDがUDPパケットを送信し、1分ごとにまとまったデータがGraphiteに書き込まれていきます。

fig

こうしてみると退屈なログインデータも興味深いものになります。下の赤い線は失敗したログインの数です。

グラフにすると何が起きたのか誰でも分かる

午前3時、なにが起きたのでしょうか。誰かがブルートフォース攻撃でもしたようです。このグラフは運用チームだけでなく、セキュリティチームもビジネスチームも参照できます。

グラフが急上昇すると自動的にアラートを発する機能も備えています。

fig

これはGrapfhiteのデフォルトのビューですが、この形式は実験的な画面にはいいのでしょうけれど、毎日参照する画面としては面倒でしょう。

fig

それよりもこうしたダッシュボード形式の方がいいでしょう。これはEtsyのグラフで、ここでサイトがクラッシュしたことが誰でも分かります。

fig

ぜひみなさんも、ここで紹介した1台、1日、1人のチャレンジをしてみてください。そしてデータを見える化して社内で共有してみてください。さらに、人事、経理といったほかのビジネスグループのダッシュボードも作ってみてください。そうすることで社内の部署のコミュニケーションを向上させることができるでしょう。

公開されたスライド:Making operations visible - devopsdays tokyo 2013

DevOps Day Tokyo 2013

DevOps Day Tokyo 2012

あわせて読みたい

DevOps




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本