沖縄学生×企業エンジニア 7月大LT大会!!! #okinawa_ac_lt https://connpass.com/event/132178/ の発表資料です
今学生に伝えたい,監視の話沖縄学生×企業エンジニア 7月大LT大会!!!id:cohalz
View Slide
自己紹介・id:cohalz / @cohalz・はてなインターン2017 Mackerelチーム・株式会社はてな SRE (2018 ~)
監視って?・サーバ上の様々なメトリックを元にアラート通知を飛ばす ・ CPU使用率や残り容量など
監視って?・そのメトリックを保存して,グラフにして見る
なぜ監視の話?
今監視が大ブーム!
覚えて帰ってほしいこと・監視ってそんなに難しくない・開発者も監視をしてみよう
何を監視すればいいか?
何を監視すればいいか?・「起きてほしくないこと」・例: Webアプリケーション ・500エラーを返す ・レスポンス時間の悪化 ・証明書の期限切れ
まずはサービスに近いところから・大事なのはサービスが動いているか・個別のサーバのCPUやメモリでアラートを設定しない ・アラートが飛びがちになる ・代わりにグラフで傾向を見よう
なんでもアラートを飛ばせばいいものでもない・たくさんのアラートが飛んでくると? ・「アラート疲れ」 ・「オオカミ少年アラート」・サービス品質をよく考えて設計する
アラートが役立つ他の例・バッチの実行 ・失敗内容をアラートに含める・システムのマイグレーション ・古いホストに接続してたらアラート ・安全にホストを落とせる
アラート設計の話
昔のアラート対応・インフラエンジニアもしくはSREがアラートを設計 ・対応するのも同じ人・同じ言語・フレームワークなので対応方法が決まっていた
最近のアラート対応・サービスが複雑になってきた ・言語やフレームワークもバラバラ ・一次対応だけでは済まないことも・サービス開発者が対応しないといけない ・原因はアプリケーション自体にあることが多い
例: Webアプリケーションが見れなくなった・MySQLのコネクション数が跳ね上がっていた ・接続数上限のため調査のために繋ぐこともできない!! ・一次対応として再起動をした
例: Webアプリケーションが見れなくなった・MySQLのコネクション数が跳ね上がっていた ・接続数上限のため調査のために繋ぐこともできない!! ・一次対応として再起動をした・実はアプリケーション側から接続を切っていなかった!! ・開発者にアプリケーションのコードを直してもらった
開発者も監視に関わるべき・サービスの実装を一番良くわかっている ・実装時に懸念点があればそこを監視すればいい・開発者がアラートを受け取る ・根本的解決が早くなるかも
コンテナ化と言語と監視・どの言語・フレームワークを使ってるか把握しにくくなる ・サービスから見た最小単位がコンテナになる・とはいえ特有の監視をしなくていい理由にはならない ・開発者が関わるべき
監視の目的
起きてほしくないことが,起こっていないを保証する
テストに似てる
テストは皆さん書いてますよね?
対象が違うだけで目的は同じ・テストはソフトウェアだが,監視はシステムを見るhttp://developer.cybozu.co.jp/archives/kazuho/2010/01/cronlog-52f2.html
監視プラグイン・プログラムを書いて対象の数字を出力するだけ ・ヘルパプラグインがあるので意外と簡単・既にいろんな人が作っていて,コードの参考にもなる
監視プラグイン・欲しいプラグインはすでに誰かが作っているかも?・欲しい機能がなかったらOSSのPR作成チャンス!
監視以外のいろいろ
監視も万能ではない苦手なもの・数値にならないもの・統計・解析・1リクエストの詳細
監視以外のあれこれ・ログ・APM (Application Performance Management) ・分散トレーシング
監視以外のあれこれ・ログ・APM (Application Performance Management) ・分散トレーシング=> サービスの見える化
「推測するな,計測せよ」
まとめ・不安を安心に変えるために監視をする ・テストと同じ ・でもアラートはよく考えよう・開発者も監視をしてみよう ・サービスに一番詳しいのは開発者
あわせて読みたい・入門 監視 ・監視についてのアンチパターンなど詳しく載っている本・監視 入門 ~ マイクロサービス時代の監視設計 ・https://junkyard.song.mu/slides/rancher-meetup-tokyo-18 ・マイクロサービスに限らない,開発者に向けた現在の監視の話