Mackerel に始まり、先日の Datadog を経て、今日は Stackdriver を触ってみる。 Stackdriver も、モニタリング系の SaaS。当初は AWS 向けのモニタリングサービスとして始まったようだけど、Google に買収され GCP ファミリーに加わり、今ではむしろ GCP 寄りのサービスになっているようす。
Stackdriver も同じくエージェントインストール型。とはいえ、GCP 上のリソースであればある程度のことはエージェントなしで取得できるみたい。現在ベータで、無料で利用できる。
〜 利用開始まで
前回の Datadog でも監視対象にした home.a-know.me
は GCE でホストしているということもあり、せっかくなんで、エージェントをインストールしない状態でどこまでのことができるのか、確認してみる。
Stackdriver は Google に買収され、まだ完全に統合はされていないものの、下の画像のように GCP の標準メニューには組み込まれている。
STACKDRIVER
の各項目については、以下の様なかんじ。
- Monitoring
- メトリックの蓄積・ビジュアライズ・アラートなど。
- GAE であれば何もせずに可能。
- GCE でも一部の項目に関しては何もしなくても取得できるが、それ以上になると Stackdriver Monitoring Agent のインストールが必要。
- Debug
- Traces
- Logging
- ログを Web コンソール上で見られるようになる
- ログデータに基づくメトリクスを作成、可視化
- ログデータに基づくメトリクスを使用したポリシーに基づいてモニタリング
- GAE であれば特になにもせず取得できるが、それ以外の場合は Stackdriver Logging Agent のインストールが必要。
このように、Stackdriver にはエージェントが Monitoring Agent と Logging Agent の二種類がある。Logging Agent を入れると google-fluentd
という本家 td-agent を fork したものが勝手に入り、 (fluentd の conf に基いて、)nginx の各種メトリクスなどを送ってくれる....という作りになっているようだ。
横道に逸れた。先ほどの「Monitoring」を押してみる。
このように、Google ログインを求める画面になる。Stackdriver がまだ完全には統合されていないゆえ、ってかんじだろうか。
↓対象の GCP プロジェクトを選ぶ。
↓AWS 連携もできることを強調されたが、今回は必要ないのでスルー。
↓以上で初期設定としては終わりっぽい。
Launch monitoring
してみると、レポートをメールで受け取るかどうかを聞かれたのちに、
トップ画面と思しき画面が表示される。。いきなりある程度のメトリックが見えている。話が早い。
タイムレンジを切り替えると...
当然かもだけど、Stackdriver と連携するより以前の情報もグラフ化してくれている。GCP として抱えてくれている情報をもとに描画してくれている、ということなんだろう。
画面中ほどにあったプラスマークでグラフの追加ができそうだったので、ポチッとな。
↓選べるリソースタイプ。
↓リソースタイプとして GCE を選んだ場合のメトリックタイプ。
どうも見慣れた項目だなと思ったら、GCP のプロジェクトのトップページで見られるもの↓と同等のようだ。
↓Advanced Option として、任意の値を閾値として補助線を記入できたり、平均か最大値か最小値か、みたいなものも選べる様子。 (Filter は、複数のインスタンスがある場合のフィルタリング、かな)
↓はい。トップページのダッシュボードにグラフの追加ができた。
Monitor Agent を入れたらもっといろいろ取れるようになる、んだろう!
エージェントなしでどこまでできるか確認
さきほどのトップページに、
Monitor Uptime、Set Alerting Policies、Create a Dashboard と、ツアーっぽいものがあったので、それを一つずつやってみる。
まずは Monitoring Uptime
。
Monitoring Uptime
Monitor Uptime
の Create Check
を押すと、↓のようなウインドウが。
Uptime
とあったので別の想像しちゃってたけど、この設定項目を見るに、どうやら外形監視っぽい。
しかもホストとか自由に指定できるっぽいので、GCP 上に限らない外形監視ができそう。
Advanced Option には、
- リクエストヘッダの指定
- ポートの指定
- レスポンスに含まれる特定テキストの指定
- カスタムヘッダの指定
- ヘルスチェック
- BASIC 認証
といったことも指定できる様子。とりあえず home.a-know.me
を HTTPS でチェックするポリシーを作ってみた。
一定時間がたつと、↓のようなかんじに。
おけ!!
Set Alerting Policies
Policy name、Condition、Notifications、Documentation、という4項目を設定する必要がある。 Policy name はそのままなのでここでは割愛。
Condition
アラートを上げる条件をここで決める。
条件を設定できる項目は、下記6項目。
↓「メトリックの変動量」は、指定した期間で○% 以上の変動があったら、といったかんじか。
↓「メトリックの欠損」は、指定した期間メトリックが取得できていなかったらアラート、ということだろう。地味に嬉しい気がする。
「プロセス死活監視」と「Uptime の監視」は、まぁそうだよねという感じではあるが、エージェントのインストールが必要な様子。↓
エージェントをインストールしたらまた見てみよう。
Notifications
Email のほか、いくつか選べる様子。
今回はお試しということもあるので、Email で。
Documentation
これは、その監視ポリシーに対する補足説明文のようなものの様子。アラート通知の Email 本文にも含まれるっぽい。Markdown もサポート。
各設定項目については以上。今回は CPU usage に対して、必ずアラートが上がるようにしてポリシーを作成。
できたできた。アラートの通知メールもちゃんときた。↓
トップページの Incidents
にもちゃんと出てきてた。↓
Create a Dashboard
そしてツアーの最後の、ダッシュボードの作成。
↑こんなかんじで、「さぁ、どんなグラフでも置くが良い!」的な、まな板の上の鯉的な状態。ためしに Add Chart
を押すと↓なかんじ。
これはさっきトップページにグラフを追加したときと同じなので、ここでは細かいところは省略。どんどんグラフをダッシュボードに追加してみる。
うん。すっきりさっぱりしてるね。
各グラフのここ↓を掴むことで、
各グラフは移動させることもできる。ただこれ、今のところは折れ線グラフしか作れないもよう。
あと、グラフを作ってみてわかったんだけど、さっき作った外形監視、
デフォで様々なロケーションからのチェックをしてくれるんだね! 具体的にいうと、下記 6 ロケーション。ここらへんは、さすが Google といったところか。
- Singapore
- Iowa
- Virginia
- Belgium
- Oregon
- Sao Paulo
(......僕のサイト、Sao Paulo からアクセスするとコンスタントに 2 sec 超えだったのか...。。 :sweat_drops: )
エージェントをインストールしてみる
Stackdriver の基本的な操作についてはだいたいこんなかんじかな。ってことで、より多くの・細かいメトリックを取るためにエージェントを入れてみることにする。
今回も前回の Datadog と同様、エージェントのインストールを Chef のレシピを書いてやってやろうと思う。今回も Stackdriver のドキュメントを見ていると下記のような記述があるので、
curl -O https://repo.stackdriver.com/stack-install.sh sudo bash stack-install.sh --write-gcm
このスクリプトを読み解き、Chef のレシピに落としこむ。
別途 API key が必要なんだけど、それは https://app.google.stackdriver.com/settings/accounts/agent/ で確認できる。
yum repository の登録から、設定ファイルへの API key のセット、エージェントの起動までを行う Chef recipe を作る Pull Request はこちら。
で、cook 後、肝心の Stackdriver 側はどうなったかというとー。
選べるメトリックタイプに「AGENT」というカテゴリが増えてる!ヽ(=´▽`=)ノ
たくさん増えてるんだけど、 Zombie processes
というものもあったりして、おもしろい。
(ちなみに、先ほど書いた 「プロセス死活監視」と「Uptime の監視」は、まぁそうだよねという感じではあるが、エージェントのインストールが必要な様子。
だけど、エージェントインストール後でも無理だった。あと何をしておく必要があるんだろう? わかるかた、ぜひ教えて下さい!)
一歩進んだ設定
今回はやらないんだけど、Stackdriver もプラグイン機構を取っているようす。
Monitoring Third-party Applications | Stackdriver Monitoring | Google Cloud
見るに、Nginx とか Elasticsearch とか、主だったところは抑えられているようす? でも、2016/06/23 現在で18プラグインというのは、ちょっと少なめかも。
とはいえ、これらのプラグインは、「じゃあ利用するときに別途プラグインをインストールしなきゃいけないのか?」というとそうではなさそうなのが、お手軽でいいところかもしれない。例えば Nginx プラグインであれば、 /opt/stackdriver/collectd/etc/collectd.d/nginx.conf
に以下の様なファイルを置いて restart するだけでいいみたい。
LoadPlugin "nginx" <Plugin "nginx"> URL "http://local-stackdriver-agent.stackdriver.com/nginx_status" </Plugin>
あとこれも今回はやらないけど、別途 Logging Agent も入れることでログの確認も Stackdriver で出来る。
先述の通り、Logging Agent を入れると google-fluentd
という、本家 fluentd(td-agent)を fork したものが入るようす。おそらく、td-agent 用の conf を追加する(Stackdriver で見たいログ単位で、かな)だけで Stackdriver に送ってくれるんだろう。
アラートが上がるような状況だと、すぐさま各種ログを見たい!ということもあると思うし、そういうときにログも一つのサービスに統合されている、というのはメリットも多い気がする。
懸念事項としてはやはり(正式サービス後の)価格面かな。今でこそ Stackdriver はベータということで無料で使えるみたいだけど、じゃあ正式サービス後もこのログの蓄積と検索の部分まで無料、もしくは据え置きか...?というと、それはあまり現実的ではない気がする。アラートの設定とか外形監視といった細かいところで王者・Google が儲けてこようとすることはないように思うけど。
追記
とかなんとか言ってたら、今後の課金の方向性についてのアナウンスがありましたw すごいタイミング!
Announcing pricing for Google Stackdriver | Google Cloud Blog
おおまかな概要としては、
- フリープランとプレミアムプランを用意
- フリープランは、GCP 上のリソースの 主要メトリック(トレース・エラーレポート)と 10GB/月 までのログの蓄積が可能。
- 以下の様なことは、$8 / resource の課金が必要なプレミアムプランの登録が必要。
- モニタリングエージェント・ロギングエージェントの利用
- AWS インテグレーション
- アラート通知
- カスタムメトリクス、カスタムロギング
- など
...というかんじ。
参考サイト
一通り自分で試したあとに下記ブログを見つけたのですが、非常に丁寧に書かれていてとても参考になりました。 :bow: