7
3

More than 3 years have passed since last update.

Firelensのヘルスチェック方法

Last updated at Posted at 2020-05-01

概要

Firelensのヘルスチェック方法がAWSドキュメントに無いので(もしかしたらあるかもしれないですが見つけられなかった)やり方を共有します。
前提として、下記条件での使用になります。

  • Firelensの実装はFluent Bitを使用
  • Firelensはサイドカーとして組み込む
  • ECSで使用

Firelensとは

FirelensはAWSのコンテナサービスでログ収集を簡単に取り扱えるようにしたツールです。

Firelens の発表 – コンテナログの新たな管理方法

Firelensの使用方法

サイドカーとして組み込んで使用します。
アプリケーションがログを標準出力するとそれを拾ってくれます。
下記の私の記事も読んでいただく良いかもしれません。

ecs-cli composeを使用してFireLensからDatadogへログを送信するYamlの記述方法

Firelensのヘルスチェック方法

下記ドキュメントが情報源になります。

ドキュメントによると、下記コマンドでヘルスチェックが可能になります。

echo '{"health": "check"}' | nc 127.0.0.1 8877 || exit 1

nc コマンド入っているの?という心配は無用で、Firelens(FluentBit)コンテナイメージにはインストールされています。
これが分かればあとは簡単で、このコマンドをTaskDefinitionに組み込んでいきます。

Docker Composeの場合

ecs-params.yamlに記述します。

version: 1
task_definition:
  services:
    hoge:
#~省略~
    log_router:
      essential: true
      healthcheck:
        test: "echo '{\"health\": \"check\"}' | nc 127.0.0.1 8877 || exit 1"
        interval: 3m
        timeout: 30s
        retries: 3
        start_period: 3m
      firelens_configuration:
#~省略~

Task Defintionsの場合

{
//~省略~
      "healthCheck": {
        "retries": 3,
        "command": [
          "CMD-SHELL",
          "echo '{\"health\": \"check\"}' | nc 127.0.0.1 8877 || exit 1"
        ],
        "timeout": 30,
        "interval": 180,
        "startPeriod": 180
      },
//~省略~
}

補足:ヘルスチェックのログについて

このヘルスチェックのアクセスログはどうなるのかというと、先程のドキュメントにも書いてありますが、

[INPUT]
    Name tcp
    Tag firelens-healthcheck
    Listen 127.0.0.1
    Port 8877

入力処理で firelens-healthcheck のタグが付けられて、

[OUTPUT]
    Name null
    Match firelens-healthcheck

firelens-healthcheck タグが付いているログは出力処理で捨てられます。
上記設定はFirelensに予め仕込まれているため、ユーザー側で設定を入れる必要はありません。

ヘルスチェックできると何がうれしいか

ステータスが全部 HEALTHY になるのも気持ち良いですが、下記が可能になります。

  • Firelensが応答しなくなった場合、アプリケーションコンテナと共に自動的に破棄される
  • DependsOnのconditionで HEALTHY が利用可能になる

GithubのREADMEが公式ドキュメントと言われたらそうなもしれないですが、こういうのはちゃんと本家AWSドキュメントの分かりやすいところに記載しておいてほしいですね。

7
3
1

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
7
3