Upgrade to Pro — share decks privately, control downloads, hide ads and more …

俺流 システム障害の「歩き方」 ~インフラ担当者の視点から~

tkhdfjnm
November 30, 2019

俺流 システム障害の「歩き方」 ~インフラ担当者の視点から~

2019-11-30 TBB 勉強会 Part.2 にて発表
2020-08-02 加筆修正して公開

これまでの業務経験で得た知見・考え方を整理して共有します

tkhdfjnm

November 30, 2019
Tweet

Other Decks in Technology

Transcript

  1. 自分たちが提供しているサービスは どのような「システム」なのか?  システム構成を把握しておく  ドキュメンテーション  構成管理 (ソース管理・リリース管理) 

    サービスの重要度・ビジネス影響を 把握しておく (リスク管理)  ユーザに保証するサービスレベルを 整理しておく (SLA) 2019/11/30 @tkhdfjnm 5
  2. 障害対応の考え方・進め方に つながる  復旧に向けた一次対応  原因個所の特定  影響範囲の特定  復旧の優先順位づけ・トリアージ

     本格対処に向けた対応  システム環境保全の要否・可否  発生時のメトリック・ログ取得の要否・可否 2019/11/30 @tkhdfjnm 7
  3. ユーザ側 サービス側 他社 自社?他社? 自社 2019/11/30 @tkhdfjnm 13 The Internet

    DB CDN 外部連携 サービス DNS DB 内部の別 サービス
  4. プロトコル・スタック を意識する  OSI 参照モデル・TCP/IP モデル 2019/11/30 @tkhdfjnm 17 L1

    L2 L3 L4 L5 - L7 物理 Ethernet IP TCP/UDP HTTP/DNS etc. SSL/TLS マシン ネットワーク機器類 マシン
  5. プロトコル・スタック を意識する  OSI 参照モデル・TCP/IP モデル 2019/11/30 @tkhdfjnm 18 L1

    L2 L3 L4 L5 - L7 物理 Ethernet IP TCP/UDP HTTP/DNS etc. SSL/TLS マシン ネットワーク機器類 マシン : 通信の流れ
  6. プロトコル・スタック を意識する  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
  7. まずは PING  End 2 End で疎通できるか?  どこまでの疎通ができるか? 

    グローバルには出られている?  同一セグメント内は? 2019/11/30 @tkhdfjnm 20 The Internet DB 外部 サービス DB google.com yahoo.co.jp など
  8. ホスト名ちゃんと引ける?  nslookup  host  手軽  dig 

    細かくオプション指定できるのでオススメ  プロセスが参照している DNS リゾルバと 異なるケースもあるので注意 2019/11/30 @tkhdfjnm 23
  9. サービスポートへの接続はできる? 途中でフィルタされていない?  curl / wget  URI 指定で HTTP

    / HTTPS を投げてみる  telnet  ポート指定でセッションを張ることができる  ヘッダがプレーンテキストなプロトコルなら 手打ちでレスポンスまで確認できる 2019/11/30 @tkhdfjnm 24
  10. 構成要素 (スタック) を意識する  どのようなプロダクトが動いているのか? 2019/11/30 @tkhdfjnm 29 アプリ ミドル

    ウェア OS マシン CPU ストレージ メモリ 電源 NIC RAID チップセット グラフィック cron init.d logrotate syslog Java VM AP サーバ スクリプト フレームワーク プログラム 運用系 ソフトウェア DB サーバ プログラム スクリプト
  11. 構成要素 (スタック) を意識する  どこまでが自前なのか? 2019/11/30 @tkhdfjnm 30 アプリ ミドル

    ウェア OS マシン CPU ストレージ メモリ 電源 NIC RAID チップセット グラフィック cron init.d logrotate syslog Java VM AP サーバ スクリプト フレームワーク プログラム 運用系 ソフトウェア DB サーバ プログラム スクリプト
  12. プロセスは正しく起動している? 起動中にエラーはない?  dmesg  /var/log 配下のログ群を cat / less

    / head / tail  messages  cron  ミドルウェア名のサブディレクトリ配下 2019/11/30 @tkhdfjnm 31
  13. そもそもどのように起動している?  サービス起動?  rc.d / init.d (chkconfig / service)

     system.d (systemctl)  ジョブネット管理?  cron?  crontab  起動ユーザに注意 2019/11/30 @tkhdfjnm 32
  14. 現在のプロセス起動状況は?  ps  top  /proc/<PID> 配下  environ

     起動方法によって環境変数が異なったりするぞ 2019/11/30 @tkhdfjnm 33
  15. プログラム・ファイルの状態は?  md5sum / openssl など  ハッシュ値  ls

     ファイルサイズ  パーミッション  world-readable だとエラーになるケースもある  cat / less  文字化け  FTP で転送していた時代は稀によくあった 2019/11/30 @tkhdfjnm 34
  16. ストレージの使用状況は?  mount  ストレージのマウント状況  df  マウントポイントごとのストレージ使用量 

    du  ディレクトリなどのファイルサイズ  vmstat / iostat  ディスク I/O キュー 2019/11/30 @tkhdfjnm 36
  17. IP DHCP NTP DNS その他 疑いだしたらキリがないお…  設定ファイルが間違っていた  /etc/hosts

     /etc/network/  NTP サーバが全滅して時刻がズレてた  プロセスがキャッシュしてた  DNS サーバの IP アドレス  ホスト名解決後の IP アドレス  mount 叩いただけで満足してた 2019/11/30 @tkhdfjnm 39