Slide 1

Slide 1 text

Webサービスを支えるモニタリング PHPカンファレンス仙台 2019

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

What is it? Webサービスを モニタリング=監視する

Slide 4

Slide 4 text

What is it? “監視とは、あるシステムやそのシステムの コンポーネントの振る舞いや出力を観察し チェックし続ける行為である。” 入門 監視 「はじめに」から

Slide 5

Slide 5 text

What is it? なぜ監視が必要か?

Slide 6

Slide 6 text

What is it? 1. 素早く障害に気付くため 2. 素早く原因究明を行うため 3. システムの振る舞いを予測し、 未然に障害を防ぐため 下に行くほどより精度の高い監視が必要

Slide 7

Slide 7 text

What is it? アプリケーションエンジニアが サービスを運用するために必要なこと

Slide 8

Slide 8 text

あじぇんだ 1 自己紹介 2 Webサービスを見る 3 アプリケーションを監視する 4 そーだいなる監視 5 まとめ

Slide 9

Slide 9 text

あじぇんだ 1 自己紹介 2 Webサービスを見る 3 アプリケーションを監視する 4 そーだいなる監視 5 まとめ

Slide 10

Slide 10 text

自己紹介 曽根 壮大(34歳) 株式会社オミカレ 副社長/CTO • 日本PostgreSQLユーザ会 勉強会分科会 座長 • 3人の子供がいます • 技術的にはWeb/LL言語/RDBが好きです そ ね た け と も

Slide 11

Slide 11 text

自己紹介 曽根 壮大(34歳) 株式会社オミカレ 副社長/CTO • 日本PostgreSQLユーザ会 勉強会分科会 座長 • 3人の子供がいます • 技術的にはWeb/LL言語/RDBが好きです そ ね た け と も

Slide 12

Slide 12 text

婚活といえばオミカレ https://party-calendar.net/

Slide 13

Slide 13 text

あじぇんだ 1 自己紹介 2 Webサービスを見る 3 自分たちのサービスを知る 4 そーだいなる監視 5 まとめ

Slide 14

Slide 14 text

Webサービスを見る Webサービスは生き物

Slide 15

Slide 15 text

Webサービスを見る Webサービスは生き物 ↓ 常に変化している

Slide 16

Slide 16 text

Webサービスを見る Webサービスは難しい

Slide 17

Slide 17 text

Webサービスを見る Webサービスは難しい ↓ 色んな要素の影響を受ける

Slide 18

Slide 18 text

Webサービスを見る クライアント インターネット サーバサイド 通信は常に往来してる DNS BGP ISP サーバ ネットワーク アプリケーション

Slide 19

Slide 19 text

Webサービスを見る クライアント インターネット サーバサイド 通信は常に往来してる DNS BGP ISP サーバ ネットワーク アプリケーション 最もわかりやすい領域 監視でサービスの状態を知る 自分たちでコントロール出来る

Slide 20

Slide 20 text

Webサービスを見る クライアント インターネット サーバサイド 通信は常に往来してる DNS BGP ISP サーバ ネットワーク アプリケーション ユーザの体験に一番効く部分 コントロール出来るが意図しない 挙動のことも多い だからこそ監視が必要

Slide 21

Slide 21 text

Webサービスを見る クライアント インターネット サーバサイド 通信は常に往来してる DNS BGP ISP サーバ ネットワーク アプリケーション 通常はコントロールできない領域 監視することで異常に早く気付く

Slide 22

Slide 22 text

Webサービスを見る それぞれをどう監視するか

Slide 23

Slide 23 text

Webサービスを見る それぞれをどう監視するか ↓ 入門 監視に書いてある

Slide 24

Slide 24 text

Webサービスを見る 監視のアンチパターン

Slide 25

Slide 25 text

Webサービスを見る • ツール依存 • 役割としての監視 • チェックボックス監視 • 監視を支えにする • 手動設定 監視のアンチパターン 入門監視に書いてある

Slide 26

Slide 26 text

Webサービスを見る 監視のデザインパターン

Slide 27

Slide 27 text

Webサービスを見る • 組み合わせ可能な監視 • ユーザ視点での監視 • 作るのでは無く買う • 継続監視 監視のデザインパターン 入門監視に書いてある

Slide 28

Slide 28 text

Webサービスを見る ビジネスを監視する

Slide 29

Slide 29 text

Webサービスを見る • PVや訪問数 • ダウンロード数 • ユーザの利用料 • クラウド料金 …etc ビジネスを監視する 入門監視に書いてある

Slide 30

Slide 30 text

Webサービスを見る

Slide 31

Slide 31 text

Webサービスを見る • SNSでバズる • テレビやニュースで取り上げられる • バグなどで想定外の挙動をする • SEOの順位が突然変わる …etc 意図しないサービスの反応

Slide 32

Slide 32 text

Webサービスを見る サービスの変化と システムの変化は相関

Slide 33

Slide 33 text

Webサービスを見る サービスを最も知っている人

Slide 34

Slide 34 text

Webサービスを見る サービスを最も知っている人 ↓ 作ってる人

Slide 35

Slide 35 text

Webサービスを見る だからエンジニアが サービスを見る=監視する

Slide 36

Slide 36 text

あじぇんだ 1 自己紹介 2 Webサービスを見る 3 アプリケーションを監視する 4 そーだいなる監視 5 まとめ

Slide 37

Slide 37 text

アプリケーションを監視する どこから始めればいいの?

Slide 38

Slide 38 text

アプリケーションを監視する どこから始めればいいの? ↓ 大事なところから始めましょう

Slide 39

Slide 39 text

アプリケーションを監視する サービスが稼働している

Slide 40

Slide 40 text

アプリケーションを監視する サービスが稼働している ↓ 200を返している

Slide 41

Slide 41 text

アプリケーションを監視する サービスが稼働している ↓ 200を返している 外形監視はシンプルで始めやすい

Slide 42

Slide 42 text

アプリケーションを監視する サーバ or SaaS 定期的にリクエストする

Slide 43

Slide 43 text

アプリケーションを監視する • インターネット越しにcurlを叩く • GASからサイトをリクエストする • 外形監視出来るSaaSを使う …etc 外形監視の方法

Slide 44

Slide 44 text

アプリケーションを監視する モニタリング用の エンドポイントを作る

Slide 45

Slide 45 text

アプリケーションを監視する サーバ or SaaS { “user” : 1000, “party”: 30000, “request”: 40000, “images”: 3500, “reserve”: { “man”: 300, “woman”: 200 } } 監視したい内容を出力する エンドポイントを作る 記録してグラフにする

Slide 46

Slide 46 text

SaaSに任せる

Slide 47

Slide 47 text

REST API の監視 えいのうにっき Mackerel の CRE だけど、何か質問ある? 〜 回答編 https://blog.a-know.me/entry/2018/12/21/102752

Slide 48

Slide 48 text

アプリケーションを監視する アプリケーションに 監視の穴を作る

Slide 49

Slide 49 text

アプリケーションを監視する • レンタルサーバーでも出来る • アプリケーション側で出来る • SaaSと組み合せれば、すぐ出来る • シナリオテストのようにシステム を総括して見れる エンドポイントを作る

Slide 50

Slide 50 text

アプリケーションを監視する 自分で作るメトリック

Slide 51

Slide 51 text

アプリケーションを監視する 自分で作るメトリック ↓ 自分が理解できる

Slide 52

Slide 52 text

アプリケーションを監視する 監視を育てる

Slide 53

Slide 53 text

あじぇんだ 1 自己紹介 2 Webサービスを見る 3 アプリケーションを監視する 4 そーだいなる監視 5 まとめ

Slide 54

Slide 54 text

そーだいなる監視 実際にやってることの例

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

そーだいなる監視 https://employment.en-japan.com/engineerhub/entry/2018/12/11/110000

Slide 57

Slide 57 text

そーだいなる監視 https://employment.en-japan.com/engineerhub/entry/2018/12/11/110000

Slide 58

Slide 58 text

そーだいなる監視 時々データの不整合あるッス! データの登録時のエラーを監視しよう

Slide 59

Slide 59 text

そーだいなる監視 https://employment.en-japan.com/engineerhub/entry/2018/12/11/110000 ここを監視する

Slide 60

Slide 60 text

そーだいなる監視 RDSのログを PHP経由で定期的にチェックする

Slide 61

Slide 61 text

そーだいなる監視 1. AWS SDK for PHPで downloadDBLogFilePortion関数を実行 2. Errorなどの特定のキーワードを拾ってalert 3. Mackerelのチェック監視の仕組みで通知

Slide 62

Slide 62 text

そーだいなる監視 AWS php mackerel-agent Slack ① SDKを実行 ② ログを取得 ③ ログを確認 ④Mackerel経由で通知 Mackerel-agentが定期的に実行する

Slide 63

Slide 63 text

詳しくはこちらの資料 https://speakerdeck.com/takahashiikki/postgresqljapan2018

Slide 64

Slide 64 text

そーだいなる監視 Apacheが時々固まるッス! Apacheの状態を見て、ハングしたら 自動で再起動させよう

Slide 65

Slide 65 text

そーだいなる監視 自動復旧を試みる

Slide 66

Slide 66 text

https://gist.github.com/soudai/85e437749c578e2e206670f961ed7279

Slide 67

Slide 67 text

そーだいなる監視 OS php mackerel-agent Apache ① コマンド実行 ② 結果を取得 ③ 閾値を超えた ④再起動 Mackerel-agentが定期的に実行する

Slide 68

Slide 68 text

そーだいなる監視 もちろんベストではないけど 深夜に起きる必要はなくなった

Slide 69

Slide 69 text

そーだいなる監視 抜本的な解決には もちろん継続的な監視が必要

Slide 70

Slide 70 text

そーだいなる監視 夜間バッチが時々詰まるッス! ルーク、 SHOW ENGINE INNODB STATUS を使え

Slide 71

Slide 71 text

そーだいなる監視 実際は人が SHOW ENGINE INNODB STATUS 生で読むのは難しい

Slide 72

Slide 72 text

そーだいなる監視 CloudWatchの値を使う

Slide 73

Slide 73 text

No content

Slide 74

Slide 74 text

そーだいなる監視 更新/削除が詰まってた ↓ MySQLのギャップロックで 待ち時間が発生

Slide 75

Slide 75 text

そーだいなる監視 Batchの処理と TV特集が被る

Slide 76

Slide 76 text

No content

Slide 77

Slide 77 text

そーだいなる監視 継続的にメトリックを取っていた

Slide 78

Slide 78 text

そーだいなる監視 継続的にメトリックを取っていた ↓ 原因究明ができた

Slide 79

Slide 79 text

そーだいなる監視 自分たちが知りたい問題を 監視する

Slide 80

Slide 80 text

あじぇんだ 1 自己紹介 2 Webサービスを見る 3 アプリケーションを監視する 4 そーだいなる監視 5 まとめ

Slide 81

Slide 81 text

まとめ

Slide 82

Slide 82 text

まとめ 入門 監視を読む

Slide 83

Slide 83 text

No content

Slide 84

Slide 84 text

まとめ ダイエットは体重計に乗るし、 健康診断では血圧を測る Webサービスも同じ

Slide 85

Slide 85 text

まとめ エンジニアには根拠が必要

Slide 86

Slide 86 text

まとめ エンジニアには根拠が必要 ↓ 根拠は技術で用意できる

Slide 87

Slide 87 text

まとめ テストはコードの品質の可視化 モニタリングはサービスの品質の可視化

Slide 88

Slide 88 text

まとめ 体重計に乗るだけでは痩せない

Slide 89

Slide 89 text

まとめ 体重計に乗るだけでは痩せない ↓ 可視化しただけでは品質は改善されない

Slide 90

Slide 90 text

まとめ イチローのバットを使っても イチローにはなれない

Slide 91

Slide 91 text

まとめ 自分たちが 改善のサイクルを回していく

Slide 92

Slide 92 text

“アプリケーションの監視は、 いわゆるインフラエンジニアより、 アプリケーションを一番理解している人が 監視を一番良くできる” おそらくはそれさえも平凡な日々 Songmu http://www.songmu.jp/riji/entry/2019-01-07-practical-monitoring.html まとめ

Slide 93

Slide 93 text

まとめ 自分たちの手でサービスを育てていく

Slide 94

Slide 94 text

ご清聴ありがとうございました