こんにちは。サイオステクノロジー OSS サポート担当 山本 です。
以前の投稿では Grafana を “時間” と “数値” を元にした「グラフを描くツール」として紹介しましたが、同時に MySQL 等の一般的な RDB もデータの参照元・データソースとして扱える、と紹介していました。
今回は、Grafana 上で RDB のデータがどのように扱えるかを MariaDB を例にして確認してみたいと思います。
今回は Grafana の導入等は扱わないので、Grafana の概要につきましては以下の投稿を参照してください。
■Grafana と MariaDB の連携
まずは Grafana のデータソースとして MariaDB を扱えるようにしましょう。
早速 Grafana のデータソースを登録…する前に、MariaDB で Grafana からアクセスするためのユーザーを作成します。
例えば、localhost にある MariaDB の「sample」というデータベースを使用する場合、以下のようなコマンドを実行します。
MariaDB [(none)]> GRANT SELECT ON sample.* TO grafanaReader@localhost identified by 'password';
上記コマンドなどで MariaDB 側のユーザーを作成したら、Grafana のインターフェースで「Configuration – Data sources」から「MySQL」のデータソースを登録します。
登録画面では、以下の項目などを設定します。
・Host:localhost:3306 (<MariaDB のあるホスト名:ポート>)
・Database:sample (<使用する Database 名>)
・User:grafanaReader (<MariaDB のユーザ名>)
・Password:password (<MariaDB のパスワード>)
必要な項目を設定したら画面下部の「Save&Test」ボタンを押下し、設定の保存と疎通の確認を行ないます。
以下のような表示がでれば連携成功です。
■MariaDB のレコードをグラフ表示してみる
さて、データソースが登録できたので、MariaDB のデータを使用してグラフを作成してみましょう。
ただし、勿論どんなデータでもグラフ化できるわけではありません。Grafana でグラフを作成できるのは「datetime 型か timestamp 型のカラム」と「数値型のカラム」を持つテーブルのみとなります。
今回はサンプルとして、以下のようなテーブルとデータを用意しました。
早速、これらのデータをグラフ表示させてみます。
「Create – Dashboard」または「Dashboards – Manage」でダッシュボード編集画面を開き、新規パネルの「Add Query」から設定を行います。
開いたページの一番上の項目「Query」の項目に MariaDB のデータソースを設定すると、A (クエリ入力項目) の入力項目がクエリビルダというものに変化します。
このクエリビルダで以下の項目を入力すると、グラフを表示することができます。
・FROM:<テーブル名>
・Time column:<datetime 型か timestamp 型のカラム名>
・SELECT:<グラフ表示したい数値データのカラム>
・Format as:Time series
また、「Metric column」に任意のカラムを入力することで、そのカラムの内容ごとにグラフを分けることができます。
同テーブル内に複数系列のデータが存在していて、その系列ごとに別のグラフを描きたいという場合などに活用することができます
■MariaDB のレコードを表示してみる
さて、先に確認したとおり Grafana でグラフ化できるのは「時間の要素を持つ数値データ」のみです。
じゃあ Grafana ではグラフ化できない文字列データを表示することはできないのか、というと、実は単純にクエリの結果を表示する機能もあったりします。
その方法を簡単に確認してみましょう。
まず、新規パネルを作成し、右側の「Choose Visualization」からパネルの設定画面に移ります。
この画面ではパネルの表示形式を設定することができますが、ここで “Table” を選択します。
次に画面左の「Queries」タブに移動します。
すると、A (クエリ入力項目) の入力項目が通常のテキストボックスになっているので、ここに任意のクエリを入力します。
・A:<任意のクエリ>
・Format as:Table
するとご覧のとおり、クエリの結果がパネルの情報として表示されるようになります。
もしダッシュボード上で表示している時間のデータのみを表示させたい場合、そのテーブルに datetime 型のカラムがあれば A (クエリ入力項目) の WHERE 句に「$__timeFilter(<datetime 型のカラム>)」を設定することでダッシュボード上の表示時間と連動するようにすることができます。
■最後に
今回は Grafana で MariaDB のレコードを表示する方法を見てきました。
グラフ化できるのは特定のデータ型を持つレコードのみですが、単純に任意のクエリの結果を表示させることもできるので、データベース上のデータを監視対象としたい場合にも Grafana を活用することで効率よく監視することができそうです。
MariaDB を Grafana で扱う際の詳細な情報につきましては公式ドキュメントを参照してください。
なお、グラフの設定でクエリビルダを使いたくない場合、あるいはテーブルの設定でもクエリビルダを利用したい場合は、Queries タブの A (クエリ) 項目の右のメニュー「Toggle text edit mode」から入力モードを切り替えることもできます。