このページはCalíope 1.7を紹介しています。私がいま作っているバージョンです。1.6は、Mac、iPad、iPhone、Apple Watch、Apple TV、Apple Vision Pro向けにApp Storeで公開中です。それぞれの機能がどのバージョンで入ったかは変更履歴に書いてあります。

すべてのトピックに「Calíopeで開く」ボタンを追加します。アプリがインストールされている場合にのみ機能します。

SQLアラート

SQLアラート

自分のクエリーが返す値を監視し、定義したしきい値を超えると「アラート」を示します。

場所: ワークスペース › ツール › SQLアラート

ワークスペースのナビゲーションバーから「SQLアラート」を開きます。表には設定済みのすべてのルールが、現在の値と「アラート」/「OK」の表示とともに並びます。クエリーが失敗したルールは「エラー」と表示されます(サーバの応答は「設定」で開いて読めます)。クエリーが行を返さない、またはNULLを返すルールは「値なし」、まだ測定していないルールはダッシュを表示します。どれもOKとは数えません。環境タグで保護された接続(書き込みの確認、または読み出し専用)では、書き込むクエリーのルールは実行されず、「拒否:書き込み」とタグの名前が表示されます。アラートは自動で実行されるので、確認を求めることができないからです。

各ルールは自分のクエリーです。Calíopeは定義した間隔でそれを実行し、指定した列の値を取り、選んだ演算子(>、<、=、<>)でしきい値と比較します。定義済みのメトリクスはありません。何を監視するかは、SQLで自分で決めます。

「更新」は、すべてのルールを1回評価します。

自動更新:再生ボタンを押して間隔を秒で入力すると、ルールが自動で評価し直されます。ルールが条件を満たすと、その行に「アラート」の印が付き、ビューのフッタにアクティブなアラートの数が表示されます。最短の間隔は1秒です。一時停止を押すか、ツールを離れると、再評価は止まります。

「サンプルを読み込む」は、動作するところから始められるよう、出来上がったルールを追加します。

MySQLMariaDBAuroraPostgreSQL

サンプルは1つで、アクティブな接続が100を超えたときです。

SQL Server

サンプルは5つあり、押すたびにまだ持っていない次のものが追加されます:ブロックされたセッション、最大値の80%を超えるユーザセッション、1分以上開いたままのトランザクション、データベースのトランザクションログの使用率80%超、そしてサーバの起動以降にロック待ちに費やした秒数です。5つすべてそろうと、ボタンはオフになります。

ClickHouse

サンプルは5つあり、押すたびにまだ持っていない次のものが追加されます:サーバの上限に対する使用中のメモリーの割合、いま実行中のクエリー、1分以上遅れているレプリカ、すでに失敗した未完了のミューテーション、そしてパーツがもっとも多いパーティションの、サーバがINSERTを拒否する上限に対する割合です。5つすべてそろうと、ボタンはオフになります。

Oracle

サンプルは5つあり、押すたびにまだ持っていない次のものが追加されます:いま何かを実行中のユーザセッションが20を超えたとき、ブロックされたセッション、もっとも使用率の高い表領域が最大サイズの85%を超えたとき、無効なオブジェクト、そして同じ呼び出しを1分以上続けているセッションです。V$SESSIONや表領域の使用量を読むものには「サーバ情報」と同じ権限が必要で、なければルールは「エラー」と表示されます。5つすべてが一覧にそろうと、ボタンはオフになります。

TiDB

サンプルは3つあり、押すたびにまだ持っていない次のものが追加されます:クラスタ内のセッションが100を超えたとき、直近1時間のスローなSQL文が100を超えたとき、そして10分以上実行中のスキーマ変更です。3つすべてが一覧にそろうと、ボタンはオフになります。

「書き出す」は、表(ルール、値、状態)をタブ区切り(TSV)のファイルに保存します。

このツールはシステムの通知を送りません。警告は、タブを開いている間の印の付いた行です。システムまで届く警告については、「サーバのアラート」と「レプリケーションモニタ」のトピックを参照してください。

キーワード: SQLアラート、アラート、しきい値、ルール、メトリクス、監視、自動更新、間隔、ポーリング、モニタ

アラートのルールを設定

監視するクエリーと、アラートを発生させる条件を定義します。

場所: SQLアラート › 設定

ツールバーの「設定」を押します。シートで「追加」を押してルールを追加し、次の項目を入力します:

- 「名前」 — 表の中でルールを見分けるための名前。
- 「SQL」 — 監視する値を返すクエリー。1行を返すようにします。読まれるのは最初の行です。
- 「列」 — 値を持つ結果の列。名前がどれにも一致しなければ、最初の列が使われます。
- 「演算子」と「しきい値」 — アラートを発生させる条件。

MySQLMariaDBAurora

例:SQL = SHOW STATUS WHERE Variable_name = 'Threads_connected'、列 = Value、演算子 = >、しきい値 = 100。

TiDB

TiDBのSHOW STATUSにはThreads_connectedがありません。同じアラートには、SQL = SELECT COUNT(*) AS n FROM information_schema.CLUSTER_PROCESSLIST、列 = n、演算子 = >、しきい値 = 100。

PostgreSQL

例:SQL = SELECT COUNT(*) AS "Value" FROM pg_stat_activity WHERE pid <> pg_backend_pid()、列 = Value、演算子 = >、しきい値 = 100。

SQL Server

例:SQL = SELECT COUNT(*) AS Value FROM sys.dm_exec_requests WHERE blocking_session_id <> 0、列 = Value、演算子 = >、しきい値 = 0。

ClickHouse

例:SQL = SELECT count() AS Value FROM system.processes WHERE query_id != queryID()、列 = Value、演算子 = >、しきい値 = 0。ルール自身のクエリーを数えずに、実行中のクエリーを数えます。64ビット整数はテキストで届き、桁を失わずに正確な数として比較されます。

Oracle

例:SQL = SELECT COUNT(*) AS "Value" FROM v$session WHERE blocking_session IS NOT NULL、列 = Value、演算子 = >、しきい値 = 0。ほかのセッションを待っているセッションを数えます。NUMBERはすべての桁付きで届き、正確な数として比較されます。

値が数値でなければ、テキストとして1文字ずつ比較されます。>と<はアルファベット順に従うので、YYYY-MM-DDの形で書いた日付には使えます。

ルールを変更するには、一覧で選択して編集し、「保存」を押します。「削除」か、横のゴミ箱でルールを削除します。「完了」はルールを保存して、もう一度評価します。

ルールはこのデバイスに保存され、開いているすべてのセッションに適用され、iCloud同期を有効にしていればほかのデバイスと同期されます。

キーワード: アラートを設定、ルール、SQL、列、演算子、しきい値、threads_connected