mkr を使うことで監視ルールをローカルファイルに保存したり(pull)、ローカルファイルとMackerelの設定の差分を確認したり(diff)、ローカルファイルの内容をMackerelの設定に反映させる(push)ことができます。
各コマンドの詳細はcliのヘルプを参照してください。
ここでは mkr を利用してGitHubで監視ルールを管理する方法を紹介します。
mkr による監視ルールの管理
mkr による監視ルールの管理方法には、WebUIとコードの両方で変更を行うか、それともコードのみで変更するかどうかで大きく次の2パターンがあります。
- WebUIとコードの両方で監視ルールを変更する
pullとpushを利用する
- WebUIでは変更せず、Codeのみで監視ルールを変更する
pushのみを利用し、pullは利用しない
mkr monitors では monitor rule の特定にidもしくはnameを利用します。
idは監視ルールを新規登録した時にMackerel側で付与するものです。
nameはユーザーが命名します。
前者ではidベースで管理しますので、管理するjsonファイルにもidを含める必要があります。
後者はnameベースで管理しますので、jsonにidを含める必要がありません。ただしnameが重複していないことが必要です。
もしjsonやMackerel側でnameが重複していた場合、mkrはidベースで監視ルールを特定しようとします。
nameが重複しているにもかかわらず、jsonの各監視ルールにidが存在しない場合はmkrは不正なjsonと判定します。
pullとpushを利用する
idベースで監視ルールを管理します。そのため監視ルールを新規登録した後で、Mackerel側で付与されたidを取得する手順が必要となります。
初期化
- GitHubにリポジトリを作成する
- git clone する
git clone <repo-url> cd <repo-path> - 監視ルールをMackerelから取得する
mkr monitors pull - GitHub上のリポジトリにコミット・プッシュする
git add monitors.json git commit -m '<commit-msg>' git push
リポジトリとMackerelの設定の同期が取れていることの確認
- GitHubから最新のデータをもってくる
cd <repo-path> git pull - Mackerelとの差分を確認する
mkr monitors diff差分がない場合、以下のような結果が得られますSummary: 0 modify, 0 append, 0 remove
ルールを変更する(Web)
- Web側で監視ルールを変更する
- 変更された監視ルールをMackerelから取得する
cd <repo-path> mkr monitors pull - GitHub上のリポジトリにコミット・プッシュする
git add monitors.json git commit -m '<commit-msg>' git push
既存の監視ルールを変更する(Code)
- GitHub上で変更・レビューなどを行い、masterブランチ(など)に反映する
- 変更された監視ルールをMackerelから取得する
cd <repo-path> mkr monitors pull - Mackerelとの差分を確認する
mkr monitors diff - 変更された監視ルールをMackerelに反映する
mkr monitors push
監視ルールを新規追加する(Code)
- jsonを作成後、GitHub上で変更・レビューなどを行い、masterブランチ(など)に反映する
- ここでのjsonはidなしのものを作成
- jsonフォーマットについては、API仕様の「監視ルールの登録」を参照してください
- Mackerelとの差分を確認する
mkr monitors diff - 追加された監視ルールをMackerelに反映する
mkr monitors push - 追加された監視ルールにMackerelが付与した
idを付きで取得するmkr monitors pull - GitHub上のリポジトリにコミット・プッシュする
git add monitors.json git commit -m '<commit-msg>' git push
pushのみを利用する
nameベースで監視ルールを管理します。
各監視ルールでnameが重複しないようにする必要があります。
またWebUI側での監視ルールの変更が非推奨となります。
もし変更してしまった場合は手動でjsonを組み立てるか、pullを実行する必要があります。
初期化
- GitHubにリポジトリを作成する
- git clone する
git clone <repo-url> cd <repo-path> - 監視ルールをMackerelから取得する
mkr monitors pull - GitHub上のリポジトリにコミット・プッシュする
git add monitors.json git commit -m '<commit-msg>' git push
リポジトリとMackerelの設定の同期が取れていることの確認
- GitHubから最新のデータをもってくる
cd <repo-path> git pull - Mackerelとの差分を確認する
mkr monitors diff差分がない場合、以下のような結果が得られますSummary: 0 modify, 0 append, 0 remove
既存の監視ルールを変更する(Code)
- GitHub上で変更・レビューなどを行い、masterブランチ(など)に反映する
- 変更された監視ルールをMackerelから取得する
cd <repo-path> mkr monitors pull - Mackerelとの差分を確認する
mkr monitors diff - 変更された監視ルールをMackerelに反映する
mkr monitors push
監視ルールを新規追加する(Code)
- jsonを作成後、GitHub上で変更・レビューなどを行い、masterブランチ(など)に反映する
- ここでのjsonはidなしのものを作成
- jsonフォーマットについては、API仕様の「監視ルールの登録」を参照してください
- Mackerelとの差分を確認する
mkr monitors diff - 追加された監視ルールをMackerelに反映する
mkr monitors pushnameベースで監視ルールの同一判定をするため、id反映のためのpullは不要となります
Mackerel側のルールを反映する
WebUI側で変更してしまった場合は、次のフローで最新化します。
- 変更された監視ルールをMackerelから取得する
cd <repo-path> mkr monitors pull- pullすることで
id付きのjsonとなる
- pullすることで
- jsonから
idフィールドを削除するidフィールドが存在しても動作に支障はありませんので、放置しても問題はありません。
- Mackerelとの差分を確認する
mkr monitors diff - GitHub上のリポジトリにコミット・プッシュする
git add monitors.json git commit -m '<commit-msg>' git push