Mackerel(マカレル)は、株式会社はてなが開発した新世代のサーバー管理・監視サービスです。AWS や Google Cloud Platform などのクラウドサーバー、各種VPS、オンプレのサーバーに Mackerelエージェントをインストールするだけで、簡単にサーバー監視をはじめることができます。そこで今回は、Mackerel の基本設定から各種監視設定までの使い方をまとめてみました。
Mackerel の利用登録
まずはじめに Mackerel のサインアップページから利用登録を行います。2週間のトライアル期間が終わると自動的に無料プランに移行します。(2021年3月21日現在)
無料プランは機能が制限されますので Mackerel をフル機能で使いたい場合は、トライアル期間終了前に有償プランの申し込みを完了しておく必要があります。詳しくは以下の公式ページをご確認ください。
登録時の注意として、登録時にオーガニゼーションを1つ作成する必要があるのですが、オーガニゼーション名の変更はサポートチームへ連絡する必要があります。オーガニゼーションは適切な名称で作成しましょう。
オーガニゼーション名を変更したい/削除したい – Mackerel Support
オーガニゼーションを作成するとメールでパスワード設定用のURLが送られてきます。パスワードの設定が終わると Mackerel ダッシュボードが表示されます。
以上で Mackerel の利用登録完了です。
左上に表示されている「スタートガイド」に従って設定を進めていきましょう。
ホストの登録
監視対象ホストを登録します。
Hosts →「ホストを新規登録する」をクリックします。
監視対象ホストのOSのバージョンを選択すると、ホストの登録方法が表示されます。(今回は CentOS 7 のサーバーを監視対象ホストとして登録します)
上で表示されているコマンドをコピーして、監視対象ホストで実行することで Mackerelエージェントがインストールされ自動で起動してくれます。
sudo curl -fsSL https://mackerel.io/file/script/setup-all-yum-v2.sh | MACKEREL_APIKEY='<APIキー>' sh
インストールが終わったら Mackerelエージェントが起動していることを確認します。以下のような表示であればOKです。
sudo journalctl -u mackerel-agent.service -- Logs begin at 月 2021-03-08 03:32:33 JST, end at 火 2021-03-09 05:58:55 JST. -- 3月 09 05:58:35 sv02 systemd[1]: Starting mackerel.io agent... 3月 09 05:58:35 sv02 systemd[1]: Started mackerel.io agent. 3月 09 05:58:35 sv02 mackerel-agent[12083]: 2021/03/09 05:58:35 INFO <main> Starting mackerel-agent version:0.71.1, rev:de40822, apiba 3月 09 05:58:43 sv02 mackerel-agent[12083]: 2021/03/09 05:58:43 INFO <command> Start: apibase = https://api.mackerelio.com, hostName =
Mackerelエージェントの自動起動も設定してくれています。
systemctl list-unit-files | grep -e mackerel-agent.service mackerel-agent.service enabled
2〜3分すると Mackerel の Hosts ページに監視対象ホストが表示されます。
エージェント用のポートを開けるのは不要
サーバー監視ツールの Zabbix を使っている方は「あれ、エージェント用のポートを開けなくていいの?」と思ったかもしれません。
Mackerel は、監視対象のデータ等を Mackerelエージェントから Mackerel に HTTPS で送信するため、Zabbix のようにエージェント用のポートを開けるのは不要です。
mackerel-agentからMackerelへ、HTTPのREST API経由にて通信しています。
Mackerel側からmackerel-agentが入っているホストに直接通信することはありません。
SSL/TLS通信で暗号化されています。Mackerelとmackerel-agent間の通信はどのようになっていますか? | Mackerel Support より引用
また、外部への通信を遮断しているサーバーの場合は、Mackerel がホストされているサーバーの IPアドレスが公開されていますので、Mackerel への HTTPS 通信のみを許可するといった対応をとることも可能です。
MackerelがホストされているIPアドレスとポート番号を教えて下さい | Mackerel Support
サービスとロールの作成
Mackerel は、登録したホストをひとつひとつ管理するのではなく、「サービス」と呼ばれる単位でホストを適切にグルーピングして管理を行います。(サービスの例:「◯◯ECサイト」「△△ニュースアプリ」)
また、サービスに属するホストは「ロール」と呼ばれる役割に必ず所属する必要があります。(ロールの例:「Webサーバー」「DBサーバー」)
Mackerel に限らずサーバー監視では対象ホストを適切にグルーピングるすことが大切です。詳しくは下の公式ページをご確認ください。
サービスの作成
Services →「サービスを新規登録する」をクリックします。
適切なサービス名を入力して、「作成」をクリックします。(サービス名は後から変更できないので注意しましょう)
ロールの作成
作成したサービス名をクリックします。
「ロールを新規作成」をクリックします。
ロール名を入力して、「作成」をクリックします。(LAMPサーバーなので「lamp」にしています)
ホストにロールの紐付け
作成したロール(およびサービス)を、ホストに紐付けます。
Hosts → 登録したホストの「サービス: ロールを設定」をクリックします。
先ほど作成したロールを選択して「更新」をクリックします。
以上でサービスとロールの作成とホストへの紐付け完了です。
通知設定
ホストの障害を検知した時の通知先は、利用登録時に登録したメールアドレスが設定されています。
Channels → 通知グループ Default の「テスト」をクリックして、テスト通知が受信できることを確認しておきましょう。
メール意外の通知方法にしたい場合は Channels →「通知グループ/通知チャンネルを追加」から新しく通知チャンネルを作成することで、Slack や LINE を通知先に設定することもできます。
監視ルール設定
監視ルールには、障害通知を行う条件(CPU利用率が80%を超えた、特定のプロセスがダウンした等)を設定します。
Monitors をクリックすると、設定されている監視ルールが表示されます。初期状態で監視ルール名「connectivity」というホスト死活監視が登録されていますので、サーバーがダウンすると障害通知が送信されるようになっています。
Monitors →「監視ルールを追加」から色々なタイプの監視ルールを追加できます。
今回は、この中からよく使いそうな「ホストメトリック監視」と「チェック監視」の監視ルールを追加してみましょう。
ホストメトリック監視
ホストメトリック監視では、CPU利用率やメモリ使用率などに一定の閾値を設定し、その閾値を超えると障害通知を送信することができます。
今回は、CPU利用率に閾値を設定してみましょう。
Monitors →「監視ルールを追加」→「ホストメトリック監視」をクリックし、メトリック「CPU %」を選択します。
閾値は Warning(警告)と Critical(危機的)の2つが設定できます。今回は、Warning を 70%、Critical は 90% を設定しました。この閾値を超えると障害通知が送信されます。
また、平均値監視 や アラート発生までの最大試行回数も設定することができます。一時的なピークによる障害通知が多い場合は調整してみてください。
監視ルール名や、必要に応じてメモを入力して「作成」をクリックします。
以上で、CPU利用率のホストメトリック監視ルールが追加されました。
チェック監視
チェック監視は、ホスト内プロセスの死活監視や、特定のTCPポートの死活監視、ホスト内に出力されているログの監視などをすることができます。
チェック監視の設定は Mackerel の Web管理画面ではなく、監視対象ホストにインストールされた Mackerelエージェントの設定ファイルに対して行います。(Web管理画面から設定を追加、変更、閲覧することはできません)
今回は、Apache httpd プロセスのチェック監視を設定してみましょう。
監視対象ホストに、公式チェックプラグイン集をインストールします。
sudo yum install mackerel-check-plugins
Mackerelエージェントの設定ファイルに、check-procs プラグインを使って Apache httpd プロセスをチェック監視する設定を追加します。
sudo vi /etc/mackerel-agent/mackerel-agent.conf (↓以下を最終行に追加) [plugin.checks.check_httpd] command = ["check-procs", "-p", "httpd"]
mackerel-agent を再起動します。
sudo systemctl restart mackerel-agent
可能であれば Apache httpd を停止してアラートが発生することを確認しておきましょう。
おわりに
普段は Zabbix をサーバー監視に利用していますが、管理サーバー(Zabbix Server)の構築/保守/運用になかなかの手間がかかります。
Mackerel は、監視対象ホストごとに月額のコストがかかりますが、管理サーバーが不要で、Mackerelエージェントさえインストールしてしまえば、すぐにサーバー監視を始められるのは大きな魅力ですね。
コメント