第707回では、シンプルな監視ツールであるUptime Kumaを紹介しました。ですがそれから4年が経過しました。Kumaのバージョンは2系に進化し、様々な仕様変更や機能強化がなされています。今回はバージョン2系の最新版
なお名前であるKumaは日本語です。ドキュメントには以下のように記載されています。
Kuma (クマ/熊) means bear 🐻 in Japanese. A little bear is watching your website.🐻 🐻 🐻
バージョン1系からのマイグレーション
以前の記事を参考に、Kumaのバージョン1系を運用している方もいるかもしれません。Dockerで運用している場合であれば、イメージのタグを2系へ更新し、コンテナを再起動するだけでマイグレーション可能です。
ですがバージョン1系と最新の2系の間には、いくつかの重大な変更が含まれています。廃止された機能もありますし、ホストの構成によってはマイグレーションできないパターンもあるようです。また従来はバックエンドデータベースにSQLite3しか使えませんでしたが、現在ではMariaDBが使えるようになっています。しかしSQLite3からMariaDBへの自動的なマイグレーションはサポートされていません。サードパーティ製ツールを使った手動マイグレーションは可能ですが、これはこれで面倒でしょう。家庭内の監視程度に、そこまで手間をかけるのかという問題もあります。Kumaは非常にシンプルで、設定すべき項目も少ないのが特徴です。そのため過去のデータを捨ててもよく、再設定が面倒でない程度の規模であれば、新規構築し直すほうが楽でしょう。
もしもマイグレーションを行う場合は、移行ガイドを熟読し、既存データをバックアップした上で行ってください。
Uptime Kuma(v2)を起動する
それではKumaを起動しましょう。今回もDockerを使って運用しますので、あらかじめDockerをインストールしておいてください。Dockerに渡すパラメータ一式をYAMLで管理できたほうが便利なので、今回はComposeも使えるようにします。Ubuntuのリポジトリから
ホームディレクトリに
$ mkdir ~/kuma && cd ~/kuma
compose.
services:
uptime-kuma:
image: louislam/uptime-kuma:2.1.1
restart: unless-stopped
volumes:
- ./data:/app/data
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "3001:3001"
Kumaの主なイメージタグは以下の通りです。
| タグ | 意味 |
|---|---|
| 2 | 2系の最新バージョン |
| 2. |
2系の特定のバージョン |
| next | Kumaの最新バージョン |
| 2-slim | MariaDBとChromiumを含まない |
| 2. |
Slim版の2系の特定のバージョン |
| next-slim | Slim版のKumaの最新バージョン |
使用するイメージの選定基準としては、おおむね以下のようになるでしょう。
- 2系の最新を自動的に追従してほしい人 → 2
- 勝手にバージョンを上げてほしくない人 → 2.
x.x - Kumaの最新を追いたい人 → next
- 内蔵のMariaDBや、Browser Engine監視タイプは不要という人 → 各種Slim版
公式としては、
Rootless Docker向けに、
上記のcompose.
compose.
$ sudo docker compose up -d
Kumaの初期設定
コンテナを起動したら、
この記事を読んでいる方であれば、言語は
「次へ」
ユーザー名とパスワードを入力して
コンテナを監視する
それでは実際に監視を設定してみましょう。まずは例として、同一ホスト上で動作しているDockerコンテナを監視してみます。以下のコマンドを実行し、監視対象となるnginxのコンテナを起動しておきましょう。
$ sudo docker run -d --name nginx nginx
KumaでDockerコンテナを監視するには、まずDockerホストを登録します。画面右上のアイコンから
KumaにDockerホストを追加します。
「テスト」
続いてコンテナを監視対象に追加します。画面左上の
これでコンテナの起動/停止を監視できるようになりました。メッセージに表示されているように、このコンテナはヘルスチェックを行っておらず、あくまでコンテナが起動していることを監視しているのみですが、それだけであれば非常に簡単なことが理解できるのではないでしょうか。
データベースを監視する
システムの監視には色々な方法があります。例えばPingに応答するか、特定のプロセスが起動しているか、特定のポートを待ち受けているか、などがよくあるパターンです。ですが実際の運用では、システムが確実に動作していることを保証するため、もう少し高レベルな監視をするのが一般的です。Webアプリであれば、APIを実際に叩いてレスポンスを見るなどが典型でしょう。
現在のアプリケーションのキモは、なんといってもデータベースです。そしてデータベースの監視でよくあるのが、実際にデータベースにログインし、監視用のクエリを実行して期待通りの応答が返るかを確認するものです。Kumaは、こうしたPostgreSQL/
あらかじめMySQLに監視用ユーザーとデータベースを作成しておきます。以下のクエリを実行してください。ここでは
CREATE DATABASE IF NOT EXISTS kuma CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER IF NOT EXISTS 'kuma'@'%' IDENTIFIED BY 'パスワード';
GRANT SELECT ON kuma.* TO 'kuma'@'%';
FLUSH PRIVILEGES;
USE kuma;
CREATE TABLE IF NOT EXISTS kuma (
value TINYINT NOT NULL
);
INSERT INTO kuma (value) SELECT 1 WHERE NOT EXISTS (SELECT 1 FROM kuma);
以下のSELECT分を実行すると、見ての通り1が返ってきます。
SELECT value FROM kuma.kuma LIMIT 1; +-------+ | value | +-------+ | 1 | +-------+
MySQL側の準備ができたので、Kumaに監視を追加します。
「接続文字列」
mysql://ユーザー名@IPアドレス:ポート番号/データベース名
今回の例であれば、以下のようになります。IPアドレスだけはお使いの環境に合わせて変更してください。
mysql://kuma@IPアドレス:3306/kuma
「パスワード」
SELECT value FROM kuma.kuma LIMIT 1;
最後に
最後に
Nextcloud Talkを使って通知する
監視において大事なのは、アラートの通知です。通知設定がしっかりできていないと、サーバーのダウンは検出したのに、誰も気づかなかったというオチにもなりかねません。
Kumaは定番のメールやSlackをはじめ、非常に多彩な通知システムと連携できますが、その中にNextcloud Talkがあります。Nextcloudは本連載でも何度か紹介している、ファイル共有、コラボレーションツールです。セルフホストできるDropboxのようなものということで、個人やチームで導入している例も多いのではないでしょうか。筆者も個人的に長年運用しています。
Nextcloud Talkは、Nextcloudに追加できる会話モジュールです。今回はこのNextcloud Talkを使って、Kumaから通知を投げる設定を紹介します。セルフホストできるオープンソースソフトウェアですから、Slackなどが使えないチームにも便利でしょう。
Nextcloud本体とTalkアプリのインストールについては省略し、既にTalkが動作している前提で解説します。NextcloudサーバーにSSHでログインし、以下のコマンドを実行してUptime KumaのBotを追加してください。
$ sudo occ talk:bot:install --feature response --no-setup "Uptime Bot" "40文字〜128文字の任意の文字列" https://NextcloudのURL
以下のコマンドを実行して、BotのIDを確認します。以下の例では
$ sudo occ talk:bot:list +----+------------+-------------+-------------+-------+----------+ | id | name | description | error_count | state | features | +----+------------+-------------+-------------+-------+----------+ | 1 | Uptime Bot | | 0 | 2 | response | +----+------------+-------------+-------------+-------+----------+
Nextcloud Talk上に、通知用の会話を作成します。そしてメニューから
https://nc.example.com/index.php/call/XXXXXXX
このURLの末尾の
$ sudo occ talk:bot:setup BotのID 会話トークン
これでNextcloud Talk側の設定は完了です。Kuma側に通知設定を追加しましょう。既存の監視設定の
「通知タイプ」
最後に、監視項目に対して通知を有効化しましょう。監視設定の
試しに、MySQLサーバーをシャットダウン/再起動してみましょう。以下のようにNextcloud Talkに通知が送信されます。
今回はシンプルな監視ツールであるUptime Kumaの新バージョンを、あらためて紹介しました。バージョン2系ではKumaのよい所であるシンプルさはそのままに、監視対象や対応通知システムが強化され、より便利になっていることがわかります。またNextcloud Talkとの連携により、通知まで含めてセルフホストできるのも強みです。お手軽な監視ツールをお探しの方は、ぜひ試してみてください。