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
開発生産性を組織全体の「生産性」へ! 部門間連携の壁を越える実践的ステップ
sudo5in5k
1
4.2k
品質と速度の両立:生成AI時代の品質保証アプローチ
odasho
1
100
2025-07-06 QGIS初級ハンズオン「はじめてのQGIS」
kou_kita
0
110
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
250
GitHub Copilot の概要
tomokusaba
1
150
Connect 100+を支える技術
kanyamaguc
0
170
WordPressから ヘッドレスCMSへ! Storyblokへの移行プロセス
nyata
0
370
整頓のジレンマとの戦い〜Tidy First?で振り返る事業とキャリアの歩み〜/Fighting the tidiness dilemma〜Business and Career Milestones Reflected on in Tidy First?〜
bitkey
1
9.3k
作曲家がボカロを使うようにPdMはAIを使え
itotaxi
0
410
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
2
4.3k
AIとともに進化するエンジニアリング / Engineering-Evolving-with-AI_final.pdf
lycorptech_jp
PRO
0
140
生まれ変わった AWS Security Hub (Preview) を紹介 #reInforce_osaka / reInforce New Security Hub
masahirokawahara
0
390
Featured
See All Featured
Site-Speed That Sticks
csswizardry
10
680
Building an army of robots
kneath
306
45k
Raft: Consensus for Rubyists
vanstee
140
7k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
KATA
mclloyd
30
14k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
950
Agile that works and the tools we love
rasmusluckow
329
21k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
We Have a Design System, Now What?
morganepeng
53
7.7k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
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