Ansibleによるmackerel-agentセットアップマイレシピ

このエントリーは、Mackerel Advent Calendar 2020の14日目エントリーです。

qiita.com

定番ネタですが、自分がmackerel-agentをAnsibleで設定する場合のPlaybookの記述についてです。サーバーにはUbuntu 20.04.1 LTSを使用しています。

Playbook

- hosts: ubuntu
  become: yes
  tasks:
    - name: (1)setup repository
      shell: wget -q -O - https://mackerel.io/file/script/setup-apt-v2.sh | sh
    - name: (2)install mackerel-agent
      apt:
        name: [ 'mackerel-agent', 'mackerel-agent-plugins', 'mackerel-check-plugins' ]
    - name: (3)setup mackerel-agent.conf
      template:
        src: template/mackerel/app
        dest: /etc/mackerel-agent/mackerel-agent.conf
    - name: (4)init mackerel-agent
      shell: mackerel-agent init -apikey="{{ mackerel_api_key }}"
    - name: (5)start mackerel-agent
      systemd:
        state: restarted
        name: mackerel-agent

解説

Mackerelの 新規ホストの登録 内の「段階的に新規ホストを登録する」の手順をばらして順を追って記述するのが基本的方針です。

(1) APTのレポジトリーを設定する

この部分はMackerelのサイトで記述されているスクリプトそのままです。

(2) mackerel-agent をインストールする。

コマンドだと

sudo apt-get install mackerel-agent

する箇所に相当します。

(3) mackerel-agent.conf を作成する

この部分は独自です。apikeyを設定する前にテンプレートからmackerel-agent.conf を作成します。

template/mackerel/app の内容は以下の通りになっています。この部分は実際の監視で必要な部分を記述します。

[plugin.metrics.linux]
command = "mackerel-plugin-linux"

監視で独自のプラグインを使用している場合は、Ansibleのこの後の箇所にプラグインのセットアップ処理を記述します。

(4) Mackerel-agentの初期化

(3)で作成したmackerel-agent.confにapikeyを設定します。

ここでは、都度mackerel-agent.confを作成してあとapikeyを設定していますが、mackerel-agent initコマンドはべき等性があるので、実行前にapikeyが設定済みかをチェックする必要はありません。

(5) mackerel-agentの起動

Pakcer等でOSのイメージを作成する際にAgentの組み込みを行う場合は、この部分の処理はスキップして、仮想マシンインスタンス作成後のOS起動時にmackerel-agentのサービスを起動します。

実行している様子

f:id:setoazusa:20201215000824p:plain

以上、mackerel-agentをAnsibleで設定する場合のPlaybookの記述について解説しました。