Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
俺流 システム障害の「歩き方」 ~インフラ担当者の視点から~
Search
tkhdfjnm
November 30, 2019
Technology
0
160
俺流 システム障害の「歩き方」 ~インフラ担当者の視点から~
2019-11-30 TBB 勉強会 Part.2 にて発表
2020-08-02 加筆修正して公開
これまでの業務経験で得た知見・考え方を整理して共有します
tkhdfjnm
November 30, 2019
Tweet
Share
Other Decks in Technology
See All in Technology
OPENLOGI Company Profile
hr01
0
53k
【虎の穴ラボ Tech Talk #1】Ansible Lintの警告への対処
toranoana
1
120
Vista FinderMx
jtes
0
160
映像・音声伝送システム
jtes
0
190
タイミーのレコメンドにおける ABテストの運用
ozeshun
2
300
株式会社EventHub・エンジニア採用資料
eventhub
0
3k
生成AIアプリのアップデートと配布の課題をCDK Pipelinesで解決してみた
sonoda_mj
0
120
あなたのアプリケーションをレガシーコードにしないための実践Pytest入門/pyconjp2024_pytest
mhrtech
3
330
「巨人の肩の上」で自作ライブラリを作る技術 / pyconjp2024
upura
2
300
Understanding and Optimising INP
akshayysharma
0
130
10Xでのデータ基盤の変遷とこれから: データマネジメントのリアル 〜BtoB企業3社の歩みとこれから〜
10xinc
5
1k
不感対策ソリューション
jtes
0
220
Featured
See All Featured
Unsuck your backbone
ammeep
667
57k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
27
7.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
59k
Designing the Hi-DPI Web
ddemaree
278
34k
The Cult of Friendly URLs
andyhume
76
6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
278
13k
Git: the NoSQL Database
bkeepers
PRO
425
64k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
3
68
Done Done
chrislema
180
16k
Pencils Down: Stop Designing & Start Developing
hursman
119
11k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
43
2k
Transcript
インフラ担当者の視点から @tkhdfjnm
これまでに得た知見・考え方を 整理して共有したい みんなの「歩き方」も、ぜひ教えてほしい 2019/11/30 @tkhdfjnm 2
2019/11/30 @tkhdfjnm 3
そのサービス うまく稼働・運用できていますか? うまくいっているならば不要な話 「しくじりシステム運用」 俺みたいになるな!! 2019/11/30 @tkhdfjnm
4
自分たちが提供しているサービスは どのような「システム」なのか? システム構成を把握しておく ドキュメンテーション 構成管理 (ソース管理・リリース管理)
サービスの重要度・ビジネス影響を 把握しておく (リスク管理) ユーザに保証するサービスレベルを 整理しておく (SLA) 2019/11/30 @tkhdfjnm 5
システムが今 どのように動いているのか? 何が起きたのか「わかる」ログを残そう 何をすべきか「わかる」ドキュメントを 残そう 各種メトリックを取得しておこう
サーバリソース状況 ネットワークトラフィック量 など システムの正常性を監視しよう 2019/11/30 @tkhdfjnm 6
障害対応の考え方・進め方に つながる 復旧に向けた一次対応 原因個所の特定 影響範囲の特定 復旧の優先順位づけ・トリアージ
本格対処に向けた対応 システム環境保全の要否・可否 発生時のメトリック・ログ取得の要否・可否 2019/11/30 @tkhdfjnm 7
障害が起きにくい システム構成にしような 影響範囲を小さくする・切り捨て やすいようにしておく SPoF を少なくする サービス特性やコストとの兼ね合いもある
2019/11/30 @tkhdfjnm 8
2019/11/30 @tkhdfjnm 9
こんな図よく見るよね 2019/11/30 @tkhdfjnm 10 サーバ The Internet データ ベース クライ
アント
そんなにシンプルじゃないよね 2019/11/30 @tkhdfjnm 11 The Internet DB CDN 外部連携 サービス
DNS DB 内部の別 サービス
ユーザ側 サービス側 サービス側?ユーザ側? 2019/11/30 @tkhdfjnm 12 The Internet DB CDN
外部連携 サービス DNS DB 内部の別 サービス
ユーザ側 サービス側 他社 自社?他社? 自社 2019/11/30 @tkhdfjnm 13 The Internet
DB CDN 外部連携 サービス DNS DB 内部の別 サービス
ネットワーク ネットワーク?マシン? ここではサーバ・ノード・インスタンス・ホストなどを まとめて「マシン」と呼ぶことにします 2019/11/30 @tkhdfjnm 14 The Internet
DB CDN 外部連携 サービス DNS DB 内部の別 サービス
外堀を埋めるように、ジワジワと 2019/11/30 @tkhdfjnm 15
異常の原因を切り分け・特定 = どこまでが正常なのか確認する 誰の責任範囲で発生している? = 誰の責任範囲は正常? どの機器で発生している? =
どの機器は正常? ネットワーク観点は 二分木的な正常性確認が容易 2019/11/30 @tkhdfjnm 16
プロトコル・スタック を意識する OSI 参照モデル・TCP/IP モデル 2019/11/30 @tkhdfjnm 17 L1
L2 L3 L4 L5 - L7 物理 Ethernet IP TCP/UDP HTTP/DNS etc. SSL/TLS マシン ネットワーク機器類 マシン
プロトコル・スタック を意識する OSI 参照モデル・TCP/IP モデル 2019/11/30 @tkhdfjnm 18 L1
L2 L3 L4 L5 - L7 物理 Ethernet IP TCP/UDP HTTP/DNS etc. SSL/TLS マシン ネットワーク機器類 マシン : 通信の流れ
プロトコル・スタック を意識する OSI 参照モデル・TCP/IP モデル 2019/11/30 @tkhdfjnm 19 L1
L2 L3 L4 L5 - L7 物理 Ethernet IP TCP/UDP HTTP/DNS etc. SSL/TLS マシン ネットワーク機器類 マシン ARP ping traceroute curl wget telnet nslookup host dig
まずは PING End 2 End で疎通できるか? どこまでの疎通ができるか?
グローバルには出られている? 同一セグメント内は? 2019/11/30 @tkhdfjnm 20 The Internet DB 外部 サービス DB google.com yahoo.co.jp など
とにかく PING どのネットワークから疎通できるか? 内部ネットワーク 自社ネットワーク モバイル回線
(グローバル) 2019/11/30 @tkhdfjnm 21 The Internet DB DB ス マ ホ
(´・ω・`) 最近は ICMP が途中の機器でフィルタ されていて通らなかったりする 2019/11/30 @tkhdfjnm 22
ホスト名ちゃんと引ける? nslookup host 手軽 dig
細かくオプション指定できるのでオススメ プロセスが参照している DNS リゾルバと 異なるケースもあるので注意 2019/11/30 @tkhdfjnm 23
サービスポートへの接続はできる? 途中でフィルタされていない? curl / wget URI 指定で HTTP
/ HTTPS を投げてみる telnet ポート指定でセッションを張ることができる ヘッダがプレーンテキストなプロトコルなら 手打ちでレスポンスまで確認できる 2019/11/30 @tkhdfjnm 24
ゲートウェイやルーティングは どうなっている? traceroute どういったネットワークを経由しているのか どのネットワークまで到達できているのか ICMP
で投げるタイプと UDP で投げるタイプ がある ICMP がフィルタされていると (ry 2019/11/30 @tkhdfjnm 25
同一セグメント内の IP アドレスと MAC アドレスは解決できる? ARP テーブルに対向機器いる? そもそも機器を接続したスイッチの
ポートは正しい? リンクアップしてる? 2019/11/30 @tkhdfjnm 26
パケットキャプチャ Wireshark 本番サーバで仕掛けるのは稀 ここまでやるのは稀 もはや趣味・職人技の領域だと思います
そこまで詳しくないです… 2019/11/30 @tkhdfjnm 27
2019/11/30 @tkhdfjnm 28
構成要素 (スタック) を意識する どのようなプロダクトが動いているのか? 2019/11/30 @tkhdfjnm 29 アプリ ミドル
ウェア OS マシン CPU ストレージ メモリ 電源 NIC RAID チップセット グラフィック cron init.d logrotate syslog Java VM AP サーバ スクリプト フレームワーク プログラム 運用系 ソフトウェア DB サーバ プログラム スクリプト
構成要素 (スタック) を意識する どこまでが自前なのか? 2019/11/30 @tkhdfjnm 30 アプリ ミドル
ウェア OS マシン CPU ストレージ メモリ 電源 NIC RAID チップセット グラフィック cron init.d logrotate syslog Java VM AP サーバ スクリプト フレームワーク プログラム 運用系 ソフトウェア DB サーバ プログラム スクリプト
プロセスは正しく起動している? 起動中にエラーはない? dmesg /var/log 配下のログ群を cat / less
/ head / tail messages cron ミドルウェア名のサブディレクトリ配下 2019/11/30 @tkhdfjnm 31
そもそもどのように起動している? サービス起動? rc.d / init.d (chkconfig / service)
system.d (systemctl) ジョブネット管理? cron? crontab 起動ユーザに注意 2019/11/30 @tkhdfjnm 32
現在のプロセス起動状況は? ps top /proc/<PID> 配下 environ
起動方法によって環境変数が異なったりするぞ 2019/11/30 @tkhdfjnm 33
プログラム・ファイルの状態は? md5sum / openssl など ハッシュ値 ls
ファイルサイズ パーミッション world-readable だとエラーになるケースもある cat / less 文字化け FTP で転送していた時代は稀によくあった 2019/11/30 @tkhdfjnm 34
CPU・メモリに空きはある? ロードアベレージは? 過剰占有しているプロセスはない? top vmstat free
sar ps 2019/11/30 @tkhdfjnm 35
ストレージの使用状況は? mount ストレージのマウント状況 df マウントポイントごとのストレージ使用量
du ディレクトリなどのファイルサイズ vmstat / iostat ディスク I/O キュー 2019/11/30 @tkhdfjnm 36
ネットワークの使用状況は? netstat 2019/11/30 @tkhdfjnm 37
OS 的なリソースの上限は? lsof ファイルディスクリプタ ulimit 2019/11/30 @tkhdfjnm
38
IP DHCP NTP DNS その他 疑いだしたらキリがないお… 設定ファイルが間違っていた /etc/hosts
/etc/network/ NTP サーバが全滅して時刻がズレてた プロセスがキャッシュしてた DNS サーバの IP アドレス ホスト名解決後の IP アドレス mount 叩いただけで満足してた 2019/11/30 @tkhdfjnm 39