LMConfigがECSジョブと友情をどのように保存するか

LogicMonitorのベストプラクティスブログ

通話中です。

私の電話は真夜中にいつか鳴ります。 拾います。 画面を見る前に、私は簡単な祈りを言います。アラートではなく、実際には友人からのテキストであることを黙って願っています(私が付け加えるかもしれませんが、朝すぐに友人から外されます)。

アラートです…

LogicMonitorでは、主要なDockerオーケストレーションフレームワークの2つとしてAmazon ECXNUMX Container Service(ECS)を利用しています。 コンテナ化されたアプリケーションの実行に柔軟性を提供し、サービスの稼働時間と継続的なコンテナの展開を維持する上で信頼性があります。 私たちはすでにAWSサービスに精通しており、インフラストラクチャのかなりの部分がそこにあるため、ECSの実装が明確な選択でした。

この特定のアラートは、ECS環境で実行されている特定のタスクが正しく機能しなくなったことを報告していました。 通常のトラブルシューティング手順のいくつかを実行しました。ECSエージェントを確認し、コンテナーをローカルで再実行し、ログを熟読し、AWSコンソールに接続しました。 何もありません。 コンテナ内のアプリケーションは、単に起動を拒否しました。

Amazon ECSはDockerとは異なる用語を使用しているため、少し混乱する可能性があります。 ECSには、「Dockerrun」コマンドのJSON表現である「タスク定義」の概念があります。 アプリケーションを形成するコンテナーについて説明し、開くポート、使用するイメージ、マウントするデータボリュームなどのさまざまなパラメーターを指定できます。 コンテナイメージが最近更新されたことに気付いた後、問題のある変更を特定するために、現在のタスク定義と以前のタスク定義の違いを確認する必要がありました。

問題

私たちが遭遇する問題は、タスク定義のバージョンを相互に比較する簡単な方法がないことです。 現在のオプションは次のとおりです。

  1. CloudWatchログを確認します。 これは、最近何が変更されたかを確認するのに役立ちますが、異なるタスク定義全体で複数の変更を識別するのは面倒です。 また、XNUMXつの過去のタスク定義を比較することも困難です。 ただし、誰が最後の変更を行ったかを正確に知ることは非常に役立ちます(私が付け加えるかもしれませんが、誰かが午前中に友達から外れることもあります)。
  2. 単純な並べて比較。 XNUMXつのブラウザーを開き、YouTubeからタブで離れ、Spotifyを最小化し、タスク定義のJSONをXNUMX行ずつ整列させます。
  3. AWS CLIを使用してJSONのXNUMXつのコピーを取得し、差分チェックを発行します。

他のオプションは、新しいものを使用することです LM構成機能。 LM Configを使用すると、エンジニアは任意のデバイスの構成ファイルを監視、管理、および警告することができます。 でも LM構成 主にネットワークデバイス構成(スイッチ、ロードバランサー、ファイアウォールなど)に使用され、その機能を簡単に拡張して、あらゆる種類の構成を収集できます。

AmazonECSタスク定義を監視するように…

ConfigSourceの記述

LM Configは、Active Discovery、カスタムアラート、および変更検出の組み合わせを使用して、構成の変更をトラブルシューティングし、アプリケーションまたはインフラストラクチャのパフォーマンスと関連付ける機能をユーザーに提供します。 これはすべて、LogicMonitorがデバイスの構成ファイルを処理する方法を指定するテンプレートであるConfigSourcesを介して定義されます。 ConfigSourceを作成して、ECSタスク定義からJSONテンプレートを収集し、予期しない変更についてアラートを出しました。

アクティブディスカバリー

ECSでは、タスク定義を登録するときに、ファミリ名を設定します。 最初のタスク定義にはリビジョンバージョン1が与えられます。同じファミリ名を持つ後続のタスク定義には、後の順次リビジョン番号が与えられます。 ActiveDiscoveryを介して各ファミリ名をインスタンスとして設定しました。 AWSリージョンはプロパティとして設定されるため、AWSリージョンが取得するすべてのタスク定義はリージョン固有になります。

ECS構成の監視

データ収集

データ収集のために、指定されたタスク定義を説明するAPI呼び出しをAWSに発行します 家族:改訂。 これはJSONで返されます。 現在、Active Discoveryが一意のファミリ名を取得するように最新のタスク定義が変更されたときにのみ確認したいのですが、これは特定の/すべてのリビジョンを含めるように簡単に調整できます。 そこから、すべてのタスク定義で発生する変更を警告するようにConfigSourceを設定しました。 また、古いリビジョンが誤って削除された場合のバックアップとしても役立ちます。 LogicMonitorにタスク定義のコピーがあります。 これは、Terraformまたはその他のクラウドインフラストラクチャ自動化ツールによって作成された変更を識別する非常に簡単な方法でもあります。

ECS構成の監視

LM Configを使用してECSタスク定義の変更を監視すると、既存のコンテナーへの変更をすぐに識別できます。 タイプミスや新しいコンテナの問題から発生する可能性のある問題をすばやく元に戻したり、修正したりできます。 この場合、タスク定義を元に戻すと、面倒なコンテナーを元に戻して正常に実行できます。

今...

友達を外す必要のある人がいます。

-

詳細について知りたい LMConfig™、専用の構成管理製品? LogicMonitorを14日間無料でお試しください.

ペリーヤン

ペリーヤンはLogicMonitorの従業員です。

LogicBlogを購読して、LogicMonitorの最新の開発に関する最新情報を入手し、ITエキスパートとエンジニアのワールドクラスのチーム、およびITプロフェッショナルが愛する製品。

LogicBlogの他の記事

アンペアロボット 影

お店の話をしましょう。

STARTED GET