これは Mackerel Advent Calendar 2022 の12日目の記事です。
こんにちは クラウドインテグレーション事業部所属の自称魚介系エンジニアの松尾です!
これまでいくつか Mackerel に関する記事は投稿させていただいておりますが、Advent Calender へは初参加となります。
いつもは Mackerel の記事を書く際、冒頭に魚に関する情報で前振りをしていたのですが、今回は何に関する記事か明らかなため、省略します。
※こちらを期待されていた方申し訳ございません。。。
さて、ここ数年の Mackerel のアップデートに関して皆さまはキャッチアップできておりますでしょうか?
「あ!なんか見たことないボタンある!」ということは無いでしょうか?
私自身も普段利用する機能以外であまりキャッチアップができているとは言い難いため、今回は管理コンソール上の操作にピックアップした復習も兼ねてのご紹介をしていきたいと思います!
管理コンソール上のみの操作とはいえ、多くの機能が提供されているため、個々はざっくりした説明となりますのでご容赦下さい。
※リリースされているいくつかのプラグインのご紹介もしようと考えていたのですが、何分かなりボリュームがあるため、そちらのまとめは別途させていただければ・・・。
※記載する内容は個人的な見解によるものが殆どですので、あくまでご参考までにいただければと思います。
Mackerel 管理画面における基本機能
オーガニゼーション詳細
ここでは Mackerel 管理コンソールにおける各種環境設定を実施することが可能です。
主な機能としては、以下の通りです。
契約プラン概要確認
契約プランに関する情報や利用中のホスト数など、利用料金に関わる項目を確認できます。
なお、契約プランの変更には「オーナー」権限(オーガニゼーションを作成したユーザ)が必要です。ユーザ管理
管理コンソールへの参加メンバー追加及びアクセス権限設定が可能です。
なお、メンバー追加や権限変更は「管理者」及び「オーナー」のみが実施可能です。
ユーザ権限の詳細は以下 Mackerel サイトをご確認下さい。
ユーザー権限クラウドサービスとのインテグレーション
各種クラウドサービスとインテグレーションを行うことで、それそれの監視サービスからメトリックを連携することが可能です。
この機能を利用する場合は、各クラウドサービス上で、ロールやキーを Mackerel 用に払い出す必要があります。
現在は、AWS、Azure、GCP とのインテグレーションが可能となっております。 各クラウド―サービスで連携できるリソースの種類は年々増えてきておりますが、すべてが連携できるわけではありません。
※初めにインテグレーションに対応した AWS が最も連携できるリソースが多く、最近追加された GCP はまだほとんど連携リソースがありません。
本ブログ執筆時点では以下添付の通りです。 設定の詳細は以下 Mackerel サイトをご確認下さい。
AWSインテグレーション
Azureインテグレーション
Google Cloudインテグレーション公開中のグラフ確認
後述する「グラフを共有」機能で、「URL を作成」した場合に表示がされます。
想定しないグラフが公開されていないかの確認に利用するとよいでしょう。環境設定
主にオーガニゼーション全体の設定や管理コンソール周りの設定がメインとなります。
設定変更は「管理者」及び「オーナー」のみが実施可能です。
現在設定できる項目は以下添付の通りです。
ちなみに、Mackerel においてのオーガニゼーションの位置づけはその名の通りではありますが、1つの組織を表しており、この組織ごとにプランの契約が必要となります。
オーガニゼーションの分け方は管理方法によって様々ですが、オーガニゼーションごとに管理コンソール及び管理対象が分離されているため、MSP 事業で複数のお客様の管理が必要だったり、プロジェクトを横断して運用している場合などは基本的に分けた方がよいでしょう。
※複数契約が難しかったりする場合もあるかと思いますので、あくまでご参考まで。
なお、各オーガニゼーションに同一のユーザを登録している場合、簡単に横断することが可能です。
Dashboards
大抵の監視ツールに付属しているダッシュボード機能は当然 Mackerel でも設定可能です。
機能の概要は以下の通りです。
OverView
既定で存在するダッシュボードとなります。
各リソースの登録状況や、アラートの状態が一目で分かる構成となっております。カスタムダッシュボード
ユーザ独自のダッシュボードを定義できます。
現在利用できるウィジェットは以下の通りです。- Markdown
Markdown 形式で自由に入力が可能です。 - Graph
「ホスト」、「サービスメトリック」、「ロール」、「式グラフ」から表示したいグラフを選択できます。
各項目の詳細は後述します。 - Value
「ホストメトリック」、「サービスメトリック」、「式グラフ」から表示したいメトリックの最新の値を数字で表示できます。 - AlertStatus
「サービス」、「ロール」を選択し、それに割り当てられたリソースのステータスが表示されます。
- Markdown
各ウィジェットのイメージとしては以下添付の通りです。
Hosts
サーバにインストールされた Mackerel Agent より収集・登録されたホストや、前述のクラウドインテグレーションにより登録されたホストがここに表示されます。
各ホストのリンクを押下することでそれぞれ取得中のメトリックを確認することができます。
ホスト一覧上部の、サービス、ロールについて、Mackerel を利用する上で重要な要素となるためここで説明します。
サービスはホスト集合(グループ)で、ロールはサービス内の役割と考えていただければと思います。
Mackerel ではこのサービス及びロールに所属したホスト及びメトリックを後述する監視対象とすることができます。
つまり、この設定を行わない限り監視を開始することはできないと思ってください。
サービス、ロールのそれぞれの分け方について、利用開始時にしっかり定義しましょう。(後で付け替えなどは可能です)
詳細は以下の Mackerel サイトをご確認下さい。
「サービス」「ロール」とは
また、ホストのステータスについて簡単に触れさせていただきます。
ステータスは以下の4種類があり、ステータスを変更することによって監視・通知を制限することができます。
設定したアラートを通知先に発報したい場合は、ホストのステータスが「working」である必要があります。
ステータスの種類は以下です。
- working
- standby
- maintenance
- poweroff
定期的に起動・停止を行っている場合や、メンテナンスを行う際などに「maintenance」や「poweroff」のステータスとすることで不要なアラートが発報されることを防ぎます。
各ステータスの詳細は以下の Mackerel サイトをご確認下さい。
監視・通知を設定する
ホスト一覧画面右上の新規ホストの登録では種別に応じたホストの登録手順を紹介しています。
過去は OS 上での Mackerel Agent のインストール手順のみ記載されていましたが、現在ではクラウドインテグレーションやコンテナ環境も追記されております。
ちなみに補足として、Mackerel Agent をインストールしてしまえば、基本的なメトリックは取得を開始できます。(細かい設定は不要)
なお、基本的なメトリック以外でも、プロセス、ログ、ポートやその他ミドルウェア、各種クラウドサービスリソースなども Mackerel の公式プラグインを利用して監視することは可能です。
自らもプラグインを作成することができますが、コーディング力が必要となりますので、興味がある方は以下の Mackerel サイトをご確認下さい。
go-mackerel-pluginを利用してカスタムメトリックプラグインを作成する
さらにもう1点補足として、クラウドインテグレーションは基本的に有効にすることをお勧めします。
Mackerel Agent がインストールできないクラウドリソースのメトリックを収集する目的ももちろんありますが、仮想マシンにおいても各クラウドサービス上でしか取得できないメトリック(Hypervisorが取得するもの)が存在するからです。
※ただし、当然 Mackerel の利用費用に関わる部分であるため、要不要は都度ご判断下さい。
ホストが不要になった場合は、個別のホストの設定画面より退役(削除)を行うことが可能です。
コストがかかる部分となりますので、不要なホストは削除しましょう。
なお、管理コンソール上から退役するだけだと、再度ホストが出現します。
それは、ホストにインストールされた Mackerel Agent がメトリックを投稿し続けるためです。
ホスト OS であれば Mackerel Agent をアンインストール、クラウドインテグレーションの場合はタグで分別するような処理が必要です。
詳細は以下 Mackerel サイトをご確認下さい。
登録されたホストを Mackerel の管理対象から外す
何らかの理由でメトリックの投稿が途絶えた場合の利用料の請求については、ホストの過去一か月分の移動平均で算出されます。
計算方法については以下 Mackerel サイトをご確認下さい。
請求対象となるホスト数の計算方法について
Services
ここでは前項で説明したサービス、ロールの作成や、それに紐づけられたホストのメトリック一覧が表示されます。
事前にしっかりサービス、ロールのマッピングを定義し、ホストに適用することで、同ロールが割り当てられたリソース群が1つのグラフで表示されます。
グルーピングされたホストメトリックの比較、推移が一目で確認できるため、運用時に重宝します。
各サービス選択時に確認できる項目は以下の通りです。
ロール
サービス内で、ロールごとにグルーピングされたメトリックを確認することができます。
ロールごとに一つのグラフにメトリックが集約されるため、一部のホストに負荷が集中していないかなどが一目で確認できます。
サービスメトリック
サービスメトリックは API を利用して自由に投稿できるメトリックになります。 サービスメトリックの詳細は以下の Mackerel サイトをご確認下さい。 ホストメトリックとサービスメトリックの違いについてその他追加可能なグラフボード
任意のグラフを追加することもできます。
ロール、サービスメトリック、式グラフの中から選択可能です。
式グラフは式(関数)を利用してメトリックをカスタマイズし表示することができる機能です。
未だ実験的機能として提供されておりますが、こちらを利用して後述の監視ルールを作成することもできます。
式監視の詳細については以下の Mackerel サイトをご確認下さい。
式による監視を行う
カスタマイズしたグラフを表示する
Monitors
ここでは監視ルールの設定を行ったり、設定済みの監視ルールを確認することができます。
既定で死活監視(connectivity)が設定されております。(削除可能)
現時点で設定できる監視ルールのカテゴリとしては以下添付の通りです。
各カテゴリを簡単に補足します。
ホストメトリック監視
こちらがいわゆるスタンダードな監視ルールで、登録済みホストのメトリックに対してしきい値と、監視間隔を設けることでアラートを発報することが可能となります。
また、前述のサービス、ロールを指定することで、監視対象のグルーピングが可能となります。(デフォルトは全てのサービスが対象となっています)ホスト死活監視
ホストにインストールされた Mackerel Agent によって死活監視を行う設定となります。
ホスト側への設定は特別不要で、Mackerel Agent が停止した場合にアラート発報が行われます。
なお、Mackerel Agent がインストールされたホストが対象となりますので、それ以外のリソース(PaaS、SaaS 型のデータベースやロードバランサーなど)がサービス、ロールに参加していても死活監視の対象とならないためご注意下さい。サービスメトリック監視
こちらは前述したサービスメトリックを監視する項目となります。
おおむねホストメトリック監視と項目は変わりませんが、途切れ監視のオプションが利用可能です。
この途切れ監視を利用することで、サービスメトリックのデータポイントが何らかの理由で届かなかった場合を異常として検知できるようになります。外形監視
こちらは WEB 監視、URL の監視と思っていただければ問題ございません。
HTTP のメソッドと URL を指定することで監視が可能です。
オプションとしてサービスへの紐づけ、レスポンスタイムのしきい値指定、リクエストヘッダ及びボディの追加、レスポンスボディのチェック、証明書の有効期限監視が可能です。
なお、注意点としてはオプションを指定せずともタイムアウトが15秒で設定されているため、レスポンスタイムはこれより短い値にしないと、意味のない設定となります。
各設定項目の詳細は以下の Mackerel サイトよりご確認下さい。
URL外形監視をおこなう式による監視
前述の式による監視を用いた監視ルールとなります。
監視ルール内での固有の設定などは特にございません。ロール内異常検知
こちらはロールに紐づけられたホストに対し、過去のメトリックを機械学習し、その傾向から異常を検知する機能です。
この機能を用いることで、個々のメトリックに関する細かいしきい値の設計/設定をせずとも、傾向から異常を検知することが可能となりますので、運用コストを削減できます。
以下のセンシティビティの設定により、どの程度の変化でアラートを発報するか決定します。sensitive
小さな変化でアラート発報を行う。normal
sensitive、insensitive の間の変化で発報を行う。insensitive
大きな変化のみアラート発報を行う。
アラートの傾向が既に判明しているメトリックの場合は通常の監視ルールを設定し、傾向分析が完了していない、または分析が難しいメトリックに対して本設定が有効になるかと思います。
各設定項目の詳細は以下の Mackerel サイトよりご確認下さい。
ロール内異常検知による監視を設定する
チェック監視
こちらは公式チェックプラグインを用いた監視になります。
監視ルールはホスト OS 側の Mackerel 設定にて定義しますので、管理コンソール側での設定はございません。
前述した通りではありますが、既存のプラグインを利用したり、自分で作成することもできます。
今回は Mackerel の管理コンソールでの操作についてのブログになりますので、詳細は以下の Mackerel サイトをご確認下さい。
チェック監視に公式チェックプラグイン集を使う共通の補足事項
各監視ルールのオプションで、通知の再送間隔が設定できます。
最小10分~最大1年での設定が可能です。
また、一つ注意点として、何点のデータポイント(分)の平均値(平均値監視)をもとめ、それが何度しきい値を超過したか(アラート発生までの最大試行回数)の設定が必要となりますが、例えば、6点の平均値が10回連続でしきい値を超えた場合にアラートを発報する場合、60分後に発報がされるわけではありません。
平均値は1分ごとに割り出されるため、しきい値を超えるデータポイントが発生し続けた場合、6分後に1回目の平均値を超えることになりますが、その後最大試行回数で設定した回数分、1分ごとに平均値が計算されます。
したがって、上記設定の場合は、しきい値を超える平均値が10回連続で発生した場合、15分後に最短でアラート発報がされることとなります。
この部分に関して過去の Mackerel Advent Calender で a-know さんより詳しく紹介されてますので、以下のブログをご参考下さい。
Mackerel の閾値監視における「平均値監視」と「最大試行回数」について
Channels
ここではアラートの通知先の設定を行ったり、確認することができます。
通知グループと通知チャンネルの違いについて説明します。
通知チャンネル
通知チャンネルは通知先の設定と思っていただければと思います。
メールであったり、Slack や Microsoft Teams、Twilio などの連携先サービスとの連携設定を行います。
AWS をご利用中であれば、EventBridge とも連携可能ですので、Mackerel のイベントを起因とした、AWS サービスとの連携が可能です。
本ブログ執筆時点での連携先は以下添付の通りです。 設定項目は連携先によって変わりますが、Slack を例に挙げると、以下のような設定が必要となります。Slack チャンネルの Webhook URL
Slack チャンネルにて Webhook インテグレーションを行い払い出された URL を指定します。Mentions
アラート通知のステータスごとにメンション設定を行うことができます。
必須の設定ではありません。関連するグラフを表示
チャンネルにグラフ画像も併せて送付するかの設定です。
必須の設定ではありません。通知するイベント
通知するイベントの種類を選択できます。
これらは全て ON にすることも、全て OFF にすることも可能です。
現時点で選択できる種類については以下の通りです。- アラート通知
アラート発生時に通知する設定です。 - アラートグループ通知
アラートグループに所属するサービス、ロールでアラートが発生した際に通知する設定です。
これを有効にした場合、アラートグループに所属するサービス、ロールで発生する個別のアラートは通知されません。(アラートグループ単位で通知されます) - ホストステータス変更
前述のホストステータスの変化(working、poweroffなど)が発生した際に通知する設定です。 - ホスト登録
ホストを新規登録した際に通知する設定です。 - ホスト退役
ホストを Mackerel より退役した際に通知する設定です。 - 監視ルールの操作
監視ルール周りの操作を行った際に通知する設定です。
- アラート通知
- デフォルト通知グループに追加する
デフォルトの通知グループに追加するかどうかの設定です。
デフォルトの通知グループについては後述します。
通知グループ
通知グループでは通知対象のサービス、ロールの選択やどこの通知チャンネルに通知を行うか設定できます。
通知チャンネルとセットでこちらの設定を行うことで、実際に通知先にアラート通知が可能となります。
また、デフォルトでは有効化されていませんが、通知レベル Critical only を有効化することで Critical アラートのみ通知がされるようになります。
なお、通知チャンネルの設定時と同様に「デフォルトの通知グループ」への追加設定ができます。
デフォルトの通知グループ (名称は Default)はオーガニゼーションの作成時に既定で作成されており、削除することはできません。
初めからオーガニゼーションで作成している全てのサービスが通知対象としてデフォルトの通知グループに登録されているため、ここに通知チャンネルを紐づけると、全てのアラートが通知先に通知されることとなります。(通知対象の変更はできません)
通知チャンネルを作成する際にデフォルトで「デフォルト通知グループに追加する」がオンになってますので、検証中や運用開始前などは十分ご注意下さい。
Alerts
ここでは現在発生中のアラート及び、過去発生していたアラートを確認することができます。
アラートは条件による絞り込みも可能です。
現在利用できるフィルター条件は以下の通りです。
- サービス
前述の監視ルールで紐づけたサービスでフィルタリングを行います。 - ロール
前述の監視ルールで紐づけたロールでフィルタリングを行います。 - ホスト
ホストごとでのフィルタリングを行います。 - ホストのステータス
前述のホストのステータスでのフィルタリングを行います。 - 監視ルール
前述の監視ルールのカテゴリでフィルタリングを行います。 - 進行状態
オープン中、またはクローズ済みのアラートのいずれかでフィルタリングを行います。 - 発生時刻
特定の期間内でのフィルタリングを行います。 - メモ
メモの内容を検索してフィルタリングを行います。
ホストや監視ルールに紐づいたメモではなく、アラートに記載したメモがフィルタリングの対象となります。
アラートのリンクを押下すると、アラートのオープンからクローズまでの詳細を確認することができます。
また、Alerts ではアラートグループを作成することが可能です。
通常は監視ルールで設定した各ルールは前項で説明したチャンネル設定に基づき、すべてのアラートが通知先に通知がされます。
監視ルールが多くなればなるほど通知が増えてしまうことになるのですが、複数ルールをアラートグループに所属させることでグループごとにまとまった通知を送信することが可能となります。
通知自体はまとまっていたとしても、アラートの詳細は Mackerel から確認すればよいので、本機能を有効に活用することで運用の手間を抑えることができるようになります。
アラートグループの詳細は、以下の Mackerel サイトをご確認下さい。
アラートグループでアラートをまとめる
その他
グラフの操作
各グラフに対して行える操作をいくつかご紹介します。
全画面表示
メトリックを全画面表示します。ラジオボタン
グラフ下のラジオボタンで表示するメトリックを選択できます。表示期間
メトリックの表示期間を指定できます。
以下の方法で期間を指定します。- 特定の期間ボタンを押下する
- 期間を直接入力する
- Zoom In/Zoom out ボタンを押下する
- カーソルバーの縮小/拡大
グラフの更新
グラフの自動更新及び手動更新を行います。グラフをチャンネルに投稿
設定済みの通知チャンネルに今現在のメトリックの情報を投稿できます。グラフを共有
グラフを以下いずれかの方法で共有することができます。- グラフのダウンロード
PNG 形式でグラフを現在のメトリック表示期間でダウンロードします。 - リンク
URL で共有する項目です。
URL はメトリックを指定の表示期間、または URL アクセス時点の表示期間で表示ができます。
なお、閲覧するにはオーガニゼーションへのユーザ登録が必要です。 - 埋め込み
HTMLや Markdown に埋め込める形式でパラメータを取得できます。
なお、閲覧するにはオーガニゼーションへのユーザ登録が必要です。
執筆時点では以下の形式での取得が可能です。- iframe
- 画像
- SVG
- Markdown
- iframe
- グラフを公開
URL を公開し、URL を知っている誰もが閲覧できるようにする項目です。
デフォルトは無効です。
前述のオーガニゼーション設定内の「公開中のグラフ確認」はこちらの設定によって公開されたグラフが表示されます。
執筆時点では以下の形式での取得が可能です。- iframe
- 画像
- SVG
- Markdown
- iframe
- グラフのダウンロード
Mackerel の監視
Mackerel 自身もサーバで動作しているため、どうしても障害は発生してしまいます。
Mackerel で障害発生した際に備えて通知を受け取れるようにしておきましょう。
Mackerel 障害の確認、通知については以下 Mackerel サイトをご確認下さい。
障害情報に関する情報はどこで確認ができますか
最後に
今回は2022年12月時点で Mackerel 管理コンソールで何ができるのかを紹介させていただきました。
初めての Mackerel Advent Calendar への参加ということもあり、気合を入れた結果、かなりのボリュームとなってしまいました・・・(笑)
次回のブログのテーマは特に決めていませんが、あまり時間を空けずに投稿できればと考えています!
それでは次回もお楽しみに!!