No.
2023-09-18
  • Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Ch2. モニタリング

TL;DR

モニタリングとは、サーバーの状態を監視することである

  • モニタリングツールを使い、サーバーにインストールされたエージェントからのメトリクスを取得することでできる
    • モニタリングツールの例:Prometheus
    • エージェントの例:node_exporter
  • モニタリングツールは、メトリクスを取得するサーバーとは別におく。モニタリングツールもリソースを食うため。
  • モニタリングにおいて、ツールの選定は重要でなく、何をメトリクスとして収集するかが重要である

Q

  • モニタリングとは何か
  • モニタリングはどのようにするのか
  • node_exporterとは
  • 外形監視と内部監視の違いは

R

モニタリングとは

  • 提供しているサービスが想定通りに動いているかを随時チェック
    • モニタリング = 継続的なテスト

メトリクスとは

  • レイテンシなど、その時点の状態を示したもの
  • メトリクスを時系列で保存しておくとトラブルシューティングに役立つ
    • メトリクスを収集しておけば、レイテンシが急激に超えたのか、徐々に増えていったのかがわかり、対処する時の手掛かりになる

モニタリングはどのようにするのか

  • リソースの状態を監視する
    • 内部監視と外形監視
  • topやfreeなどのLinuxコマンドを利用し、リソースの状態を見る
    • 24時間365日手動で記録するのはほぼ不可能
    • -> モニタリングツールを使う

外形監視と内部監視の違いは

  • 外形監視
    • ユーザーと同じ経路を使って監視
    • 外部からモニタリングデーモン(バックグラウンドで実行するアプリ)を利用して監視
    • HTTPリクエストを送信して目的のコードを返すかを確認する
    • シナリオテストを使ってよりユーザーの操作に近い動きでテストすることもある
  • 内部監視
    • ユーザーが見えない部分のモニタリング
    • アプリケーションが実行されているサーバー上でモニタリングデーモンを立ち上げて、メトリクスの収集を行う
    • このデーモンのことをエージェントという
    • エージェントごとに収集するメトリクスは異なるため、複数のエージェントを起動することが多い

モニタリングツールとは

  • 以下の機能を持つようなツール
    • メトリクスを自動で収集し保存する
    • 保存したメトリクスをWebブラウザに表示する
    • メトリクスが特定の閾値に達すると通知を行う
  • (例)Prometheus

Prometheusとは

  • SoundCloud社のエンジニアが開発したモニタリングツール
    • OSSなので誰でも無料で使うことができる
    • プル型のアーキテクチャ
    • Remote StorageやAgent modeなどの拡張機能を使うとプッシュ型のように使うこともできる

プル型・プッシュ型とは

  • プル型:エージェントに対してメトリクスを送ってもらうようにリクエストする
    • メトリクスの取得間隔をモニタリングツール側から管理できる
    • エージェント側の実装が簡単になる(リクエストに対してレスポンスするだけなので)
  • プッシュ型:エージェントがモニタリングツールにメトリクスを送信する
    • エージェントのあるサーバーで、インバウンド設定をする必要がないので、接続が比較的容易
    • モニタリング対象の増減がしやすい

node_exporterとは

  • Prometheusのために開発された、Linuxのリソース状況を取得するエージェント
  • CPU使用率やメモリ使用率、ディスクI/Oなど非常に多くのメトリクスを収集できる
  • 基本は標準設定でOK