頑張らないために頑張る

ゆるく頑張ります

Dockerコンテナ上にGrafanaをインストールしてCSVデータをチャート出力してみる

Posted at — Feb 26, 2023

概要

GrafanaとはOSSのデータ可視化ツールで、データソースからデータを取得してさまざまなグラフやチャート、テーブルなどで可視化できます。このGrafanaはオフィシャルでDockerコンテナが用意されており、このコンテナを利用することで簡単に環境構築が可能です。

今回はDockerコンテナを利用してGrafanaを構築し、テスト用のCSVデータを参照して簡単なチャート出力を実行してみます。

環境

上記の環境において実行しています。

GrafanaのコンテナはDocker Hubにあるものを利用しています。

動作確認のため、CSVファイルをデータソースとして扱えるプラグインを導入します。

本来であれば、Grafanaの入力に利用できるデータソースとして、何らかのDBを用意する必要があります。たとえばinfluxDBとかPrometheusですね。ただ、まぁ、動作確認のためだけにDB用意するのはメンドくさい大変なので、ここではCSVを使って動作確認します。とはいえ、デフォルトの状態ではGrafanaはCSVをデータソースとして利用できないので、CSVもデータソースに指定できるプラグインをインストールします。DBの用意が面倒でCSVを読むためのプラグインをインストールしてるとか若干本末転倒な感があるような。

Dockerコンテナの準備

GrafanaのコンテナはDocker Hubに存在するものをそのまま利用します。なのでdocker pullして実行すればそれで終わりです。

docker pull grafana/grafana
docker run -d --name=grafana -p 3000:3000 grafana/grafana

上記のコマンドをWSLで実行すれば、あとは自動的に処理が進みます。

docker pull -e HTTP_PROXY=http://<PROXYSERVER>:<PROXYPORT> -e HTTPS_PROXY=http://<PROXYSERVER>:<PROXYPORT> grafana/grafana
docker pull -e HTTP_PROXY=http://<USERNAME>:<PASSWORD>@<PROXYSERVER>:<PROXYPORT> -e HTTPS_PROXY=http://<USERNAME>:<PASSWORD>@<PROXYSERVER>:<PROXYPORT> grafana/grafana

Proxy環境下では、上記のように-eコマンドを使って、環境変数としてProxyのアドレスなどを設定します。なお、docker composeを使う方法もありますが、今回は単純にコマンドをガシガシと実行していくスタイルとします。

処理が完了したら、Grafanaのコンテナが起動しているはずです。ブラウザでhttp://localhost:3000にアクセスすると、Grafanaのログインページが表示されます。ここではIDがadmin、パスワードもadminと入力することでログインできます。なお、「パスワード変えてね」という表示が出ますが、無慈悲にもここでは「Skip」を押して見なかったことにします。どうせ、動作確認したらコンテナ終了させるしね(ハナホジー

CSV Data Source for Grafanaをインストールする

動作確認のためだけにDBを用意するのは面倒なので、ここは適当なCSVファイルを入力にします。するのですが、Grafanaはデフォルトの状態だとCSVファイルをデータソースをして参照してくれません。そこで、CSVをデータソースとして扱ってくれるプラグインを導入します。

docker exec -it grafana /bin/bash
grafana-cli plugins install marcusolsson-csv-datasource

Grafanaが稼働しているコンテナに入り、grafana-cliを使ってプラグインをインストールします。インストールが終わったら、「リスタートしてね」というメッセージが表示されます。

次にGrafanaの設定ファイルに追記します。対象の設定ファイルは/etc/grafana/grafana.iniです。

[plugin.marcusolsson-csv-datasource]
allow_local_mode = true

上記の2行を追記します。この設定がないと、ローカルにあるファイルをアクセスしてくれません。動作確認で用いるCSVは、ローカルに置いたものなのでこの設定が必要なのです。ここまで設定できたら、コンテナを一度リスタートします。

docker restart grafana

上記のリスタート自体はすぐ終わると思います。

環境設定

次にデータソースなどの設定を行います。この作業は、ブラウザを使ってGrafanaにログインしてから行います。

pic

ログインしたら、左側にある歯車マークをクリックして設定のページを表示します。ここで「Add data source」をクリックします。

pic

すると、データソースとして登録できる一覧が表示されます。上から探してもいいのですが、検索窓があるのでそこに「csv」と入力します。小文字大文字の区別はありません。

pic

出ました。CSV。これをクリックします。

pic

デフォルトの状態では上記のように「HTTP」が選択されています。今回動作確認で使いたいCSVはローカルのデータなので、「Local」を選択しましょう。

pic

「Local」を選択すると、いきなり入力フィールドがシンプルになりました。これは参照するファイルだけを指定すれば、あとはGrafanaのプラグインがいい感じに処理してくれます。

id,date,item_id,sales,number_of_registered
107,2022-01-21,9c03bd45-e091-4104-913c-4ec08d166b90,423,1471
105,2022-01-22,5a123402-f73d-40da-99e8-ae14bf89a238,332,1555
101,2022-01-28,76854b96-f080-45a5-b031-84deba543114,394,1112
104,2022-02-01,cf7eae19-5058-4bab-9910-0b446aa6d2b5,472,1161
106,2022-02-08,954f2611-f7cc-4e76-9d55-1ad7e1d90248,352,1582
103,2022-02-12,a3bb8474-c375-4509-a781-4141ded1f20a,383,1464
100,2022-03-01,84b21306-2e37-4384-b40b-9d53ca49f622,486,1153
108,2022-03-06,dc1b4e72-7aae-4bef-be1f-650ba1939779,391,1416
109,2022-03-07,627b7377-8ada-4d02-8039-03ee331b3bd0,472,1522
102,2022-03-16,fe1e05f2-ff3f-4c99-b360-b8c0374f903d,325,1559

なお、今回指定するdate.csvというデータは上記のような内容です。当たり前ですが、テストデータです。

pic

参照先のCSVのパスを設定して、「Save & Test」をクリックします。

pic

設定内容に問題がなければ、上記のように「Success」と表示されるはずです。問題ないようでしたら、次は「Explore」というボタンをクリックしてみます。

pic

すると、指定したファイルをGrafanaが参照して一覧化してくれます。ちなみに、今回のようにCSVをデータソースにしている場合は、データがどんな内容であってもExploreの画面上ではすべての列が文字列のデータとして扱われます。これは、データソースがCSVっていうテキストファイルである以上は致し方ないところかと。

なにはともあれ、これでCSVファイルをデータソースとして扱う準備ができました。

チャート出力の確認

次は、このCSVファイルを入力としてチャートを出力してみます。

pic

左側で「田」みたいなアイコンがDashboardsです。これをクリックすると、ダッシュボードの一覧が表示されます。上記では1つだけ「General/Home」というダッシュボードが存在していますが、新規で環境構築を行った直後の場合は1つもダッシュボードが存在していません。そのため、右側にある「New」というボタンを押し、表示されたメニューから「New Dashborard」を選択して新しいダッシュボードを追加しておきます。

pic

ダッシュボードを開くと右側にアイコンがいくつか表示されます。

pic

このうち、「Add Panel」をクリックします。

pic

すると、新しいPanelが追加されます。このパネルが、チャートや表を出力するためのスペースになります。このうち、「Add New Panel」をクリックします。

pic

すると、パネルの編集画面が表示されます。ここで、どんなデータソースを選択して、どんなデータ列をどんなグラフで表示するかなどを設定するわけです。ここでは折れ線グラフを作成します。右上で「Time Series」が選択されていることを確認しておいてください。

pic

ページ下部のQueryを使ってどの列を出力するかを設定します。ここでは「Time Series」のグラフを選択しているため、X軸が時間や日次、Y軸がなんらかの値を持つ列を指定します。指定方法は「Field」の欄に出力したい項目列を選択するだけです。前述のとおり、データソースがCSVだとデフォルトですべての列が文字列扱いされてしまいます。そのため、「Field」では列の設定をする際に、正しいデータ型を指定してやってください。

pic

グラフの出力設定を編集すると、自動的にページ上部にあるグラフのプレビュー表示に変化があるはずです。

pic

ページ右側にあるのは、グラフのタイトルや折れ線の太さやスタイルなどを設定する部分です。ここではタイトルと折れ線のスタイルを変更してみます。タイトルは「Title」という箇所を、表示したいタイトルに編集すればOKです。

pic

「Graph style」という部分で、グラフのスタイルを指定できます。たとえば折れ線グラフの線を実線じゃなく点線にしたいとか、線の太さを変えたいという場合はここで設定します。ネックは、複数のグラフがある場合、すべてのグラフに影響を及ぼす点です。2つグラフがあるうちの1つだけ点線にしたい、という場合は「Overrides」という箇所で個別に設定する必要があります。

pic

ここではこれ以上の変更は行わないものとして、変更した内容を保存しましょう。「Save」ボタンを押してダッシュボードの内容を保存しておきます。

pic

変更した内容を保存しダッシュボードを見てみると、先ほど作成したパネルに折れ線グラフが表示されています。

参考

  1. Install Grafana
  2. grafana/grafana-csv-datasource
  3. CSV Data Source for Grafana
  4. Restart Grafana
  5. Proxy 環境下でがんばる Docker for Windows チュートリアル
comments powered by Disqus