[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】Dagster Code Location Serverの監視システムの構築 [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

EVERSTEELのデータエンジニアチームは、業務委託中心の体制である。そのため、システムへ常時張り付いて対応することは現実的ではない。既存の監視対象はdbtやDagster Daemon等に限定されていた。その結果、Code Location Serverの異常を検知できない課題があった。
  • Code Location Serverの稼働状態が未監視。
  • Pythonの構文エラーやインポートエラーを即座に検知できない。
  • 定義の更新時に発生するエラーへの対応が遅れるリスクがある。

// Approach

チームは、Webserverが利用するGraphQL APIを直接叩き、サーバーの状態を取得する手法を採用した。これにより、外部からCode Location Serverの評価結果を取得できる。
  • AWS Lambdaを用いたバッチ実行型の監視サーバーを構築。
  • VPC内のサーバーへ接続するため、LambdaをVPCに紐付け。
  • GraphQLクエリ(workspaceOrError)でloadStatusを取得。
  • EventBridgeで定期実行し、異常時はCloudWatch経由でSlackへ通知。
  • Floci(AWSエミュレーター)を用いて、Lambdaのロジックを自動テスト。

// Result

開発者がDagsterの定義を更新した際、エラーがあれば即座にSlackへ通知される体制を整えた。これにより、エンジニアの検知タイミングが大幅に改善された。
  • 定義更新時のエラーを即座に検知し、迅速な対応が可能になった。
  • 導入後1ヶ月で3件の通知があり、実運用での有効性を確認。
  • デプロイ直後のロード待ちによる誤検知が、今後の技術的課題として残った。

Senior Engineer Insight

> 運用負荷を最小化するためにLambdaとマネージドサービスを組み合わせた構成は、極めて合理的だ。GraphQL APIの直接利用は、UIに依存せず自動検知を実現する優れた解である。ただし、デプロイ時の過渡期における誤検知は、アラート疲れを招くリスクがある。CloudWatchの評価期間調整や、デプロイ完了を待つロジックの検討が、実運用における次のステップだ。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。