LoginSignup
2
0

More than 3 years have passed since last update.

Amazon Linux2にECS Agent登録&デバッグ

Posted at

ECSでEC2を使う場合のデバッグ

  • Amazon Linux2に公式マニュアルを元にecs-agentを入れてクラスターにつないでみた
  • マニュアルのとおりにやっても正常に起動しない場合があり、そういう時にどうやってデバグするのか情報がまとまっていなかったので、自分のメモがてら記事にしてみる
  • 今回のケースではAmazon Linux2に手動でagentをインストールした場合を扱います。他のケースだと細かいパスとかは違っているかもしれません

デバッグに有用なファイルのパス

# 設定情報
## 設定情報。どのクラスタに所属させるか、などを設定
/etc/ecs/ecs.config
## エージェント状態ファイル。インスタンスがクラスターに作成された後に作られる。曲者なやつ。
/var/lib/ecs/data/ecs_agent_data.json

# ログファイル
## 初期化ログ。起動、失敗、再起動、終了がイベントベースでざっくり載っている。
## なんで止まったとかは書いてないけど、何回リトライしたかとかはここを見ると追える
/var/log/ecs/ecs-init.log
## エージェントログ。実際のデバッグに有用な情報は大体ここ
/var/log/ecs/ecs-agent.log
## ボリュームログ。ecsエージェントがmountするdockerのvolumeのログ?まだあまり使ったことはない
/var/log/ecs/ecs-volume-plugin.log

デバッグのステップ

systemdの確認

まずはsystemdでちゃんとecsのデーモンが動いているか確認。Activeがactive(running)になっていなければ、ECSエージェントが正しくインストールされていないかも。

$ sudo systemctl status ecs
● ecs.service - Amazon Elastic Container Service - container agent
   Loaded: loaded (/usr/lib/systemd/system/ecs.service; enabled; vendor preset: disabled)
   Active: active (running) since 月 2020-08-24 20:42:32 UTC; 3 days ago
     Docs: https://aws.amazon.com/documentation/ecs/
  Process: 5195 ExecStopPost=/usr/libexec/amazon-ecs-init post-stop (code=exited, status=0/SUCCESS)
  Process: 5179 ExecStop=/usr/libexec/amazon-ecs-init stop (code=exited, status=0/SUCCESS)
  Process: 5213 ExecStartPre=/usr/libexec/amazon-ecs-init pre-start (code=exited, status=0/SUCCESS)
 Main PID: 5279 (amazon-ecs-init)
    Tasks: 7
   Memory: 3.4M
   CGroup: /system.slice/ecs.service
           └─5279 /usr/libexec/amazon-ecs-init start

metadataの取得

jsonが表示されればOK。うまく動いていない場合は何も表示されない

$ curl -s http://localhost:51678/v1/metadata | python -mjson.tool
{
    "Cluster": "my-cluster",
    "ContainerInstanceArn": "arn:aws:ecs:ap-northeast-1:xxxxxxx:container-instance/1111-22222-33333-44444",
    "Version": "Amazon ECS Agent - v1.39.0 (61d418ea)"
}

上記2コマンドで異常が検知された場合のやること

  • 公式マニュアルに従ってちゃんとecs agent入れるコマンド打っているか確認
  • /etc/ecs/ecs.configにちゃんとECS_CLUSTERが正しく指定されているか確認
ECS_CLUSTER=my-cluster
  • /var/log/ecs/ecs-agent.logのログ内容を確認
    • エラーの内容を確認。明確なエラー原因がつかめなかったら、とりあえず次のステップを行う
  • /var/lib/ecs/data/ecs_agent_data.jsonの中身を消す
    • 何回か発生した不具合のほとんどは、ここのデータが更新されていないために発生していた。ecs.configの内容の書き換えや、EC2インスタンスのタイプを変更しての再起動など、何か環境が変わった場合、基本はここをリセットしないとうまく立ち上がってくれない
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0