Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What is going on with this article?
@tknzk

Elasticbeanstalk with Docker でmackerel-agentを動かす時の設定と課題 - MackerelAdventCalendar 2015 7日目

More than 3 years have passed since last update.

MackerelAdventCalendar 7日目の記事です。

はじめに

私が所属しているVASILYでは、Zabbixで監視していたものをMackerelへ移行を行っており、新規で立てられるサーバーには、Chefでプロビジョニングする際にmackerel-agentが組み込まれるようになっています。

私が主に管理している広告配信サーバは、今年の6月にElasticBeanstalk with Dockerに置き換えました。multi-containerで構成しており、その一つにmackerel-agentのcontainerも組み込んでいます。
docker-mackerel-agentがDockerHubにあるので、Dockererun.aws.jsonで少し設定するだけで組み込めます。

{
  "AWSEBDockerrunVersion": 2,
  "containerDefinitions": [
~~snip~~
    {
      "name": "mackerel-agent",
      "image": "mackerel/mackerel-agent",
      "memory": 512,
      "links": [
        "ad-server",
        "nginx-proxy"
      ],
      "essential": true,
      "environment": [
        {"name": "apikey",  "value": "API_KEY"},
        {"name": "include", "value": "/etc/mackerel-agent/conf.d/*"},
        {"name": "auto_retirement",  "value": "1"}
      ],
~snip~
    }
  ],
~snip~

}

DockerとElasticBeanstalkでauto-scaling環境を構築しているので、その設定を数か所加えています。

dockerのmetrics

  • dockerのmetricsを取得するための設定
  • /etc/mackerel-agent/conf.d/docker.conf
[plugin.metrics.docker]
command = "/usr/local/bin/mackerel-plugin-docker"

display_name

  • mackerel-agentのdocker containerのidがmackerelのdashboard上のホスト名となることへの対応になります
  • /etc/mackerel-agent/conf.d/display_name.conf
display_name = "ad-server"

host_status

  • 起動/終了時のmackerel dashboard上のstatusを変更する対応
  • /etc/mackerel-agent/conf.d/host_status.conf
[host_status]
on_start = "working"
on_stop = "poweroff"

しかし、on_stopはElasticBeanstalk+Dockerの環境では上手く動かない状態です。 @songmu さんに相談したところ、停止処理時にインターネット上に出て行く必要があるとのことで、ElasticBeanstalkの環境は、instanceがいきなりterminateされるので、厳しい状態です。

fluentdとの連携

fluentd-plugin-mackerelを利用して、広告の配信数、impression数、click数などをグラフ化して、日々の配信状況を監視したりもしており、広告管理ツール内にグラフを貼り付けたペライチのページをつくり、エンジニア以外にもグラフをざっくり確認してもらってりしています。
先日行われた FasionTech MeetupでfluentdとmackerelでカジュアルモニタリングというLTをしたりもしました。

auto-retirement

auto-scaling環境では、自動退役をしないとつらいので、設定をおこないました。
mackerel-agentには環境変数で AUTO_RETIREMENT=1 を設定すると自動退役してくれる機能がありますが、Docker環境ではうまくいかないということで、@stanaka さんに対応 していただきました。
これにより、auto-retirement=1を環境変数で起動時に設定すると docker stop mackerel-agent-containerid で dockerを停止した際に、自動退役してくれるようになりました。

しかし残念ながら、on_stopと同様にinstanceがいきなりterminateされる環境では、処理がうまくhookできず、自動退役は実現できていない状態です。。
(**ElasticBeanstalkのinstance terminate時のhook処理の設定方法をご存知の方は教えて下さい。。。)

base-platformの選択により解決しました
http://qiita.com/tknzk/items/a6b1a9003ff26683b88a#_reference-0ee456eeb535cbab2a74

まとめ

  • 環境依存でうまく動かない機能がありますが、基本的には、少しの設定でよしなに動いてくれるMackerelは便利
  • fluentdとの連携でservice metricsを簡単に登録できるので、カジュアルにグラフ化できて便利

明日は @tkuchiki さんです。

9
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
smarthr
社会の非合理を、ハックする。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
9
Help us understand the problem. What is going on with this article?