LoginSignup
40
50

More than 5 years have passed since last update.

InfluxDBきほんのき

Posted at

最近Grafanaを弄っている流れでInfluxDBも触っています。
結構くせがあったのでInfluxDBについてまとめることにしました。

インストール

rpmdpkg、macだったらbrewでサクッと入れられます。

InfluxDB | Installation

  • REHL系の例
rpm -ivh http://s3.amazonaws.com/influxdb/influxdb-latest-1.x86_64.rpm

GUI

InfluxDBにはWebの管理GUIが同梱されています。
デフォルトでは
http://localhost:8083
でアクセスできます。

InfluxDB1.png

初期のユーザとパスワードは公式ドキュメントに記載があるようにroot/rootです。
ホスト名にはブラウザで開いたホストと同じもの、ポートには8086を指定してconnectします。

データベースの作成

InfluxDBのデータベースはRDBのスキーマの概念に近いです。

GUI経由でのデータベースの作成

connectするとデータベース一覧と登録フォームが表示されます。

influxdb2.png

ここでデータベース名を入力し、Create Databaseを行うとデータベースを作成することができます。

REST API経由でのデータベースの作成

curlを使った例です。JSONを-dPOSTします。

curl -X POST 'http://localhost:8086/db?u=root&p=root' -d '{"name": "test"}'

ユーザの作成

GUI経由でのユーザの作成

データベース・ユーザを作成します。
データベースを選択するとユーザ一覧と登録フォームが表示されます。

influxdb3.png

ここでユーザ名とパスワードを入力し、Createを行うとデータベース・ユーザを作成することができます。
AdminにチェックするとAdminユーザとなります。
Adminユーザはデータベースやユーザを作成/削除したり、パーミッションを変更したりすることができます。

REST API経由でのユーザの作成

パスが/db/データベース名/usersになります。

curl -X POST 'http://localhost:8086/db/test/users?u=root&p=root' -d '{"name": "test", "password": "パスワード"}'

データの登録・WRITE

InfkuxDBではseriesごとにデータを登録します。
seriesとはRDBのテーブルに近い概念です。
timeカラムを指定して登録すれば指定した時刻のデータを登録することができます。

GUI経由でのデータ登録

データベース一覧からExplore Data »をタップします。
Time Series Nameseries名を入力し、
Write PointにJSONを入力してボタンをタップします。
JSONの形式は{"カラム名": 値, ・・・}です。

influxdb4.png

REST API経由でのデータ登録

パスが/db/データベース名/seriesになります。
JSONをPOSTするのですがGUIのJSONと形式が異なります。

[
  {
    "name": "series名",
    "columns": [カラム名を配列で、、],
    "points": [
      [カラム1の値、カラム2の値・・・],
      :
    ]
  }
]
curl -X POST 'http://localhost:8086/db/test/series?u=root&p=root' -d \
'{"name": "nikkei_average", "columns": ["time", "price"], "points": [[1418083200000, 17450.77]]}'

データの上書きを行うときはtime, sequence_numberを指定してWRITEします。

curl -X POST 'http://localhost:8086/db/test/series?u=root&p=root' -d \
'{"name": "nikkei_average", "columns": ["time", "sequence_number", "price"], "points": [[1418083200000, 69260001, 17450.77]]}'

クエリ・SELECT

GUI経由でのクエリ

データ登録と同様、データベース一覧からExplore Data »をタップします。
Read Pountsにクエリを入力し、Execute Queryをタップします。

influxdb5.png

時系列グラフと結果が一覧で表示されます。

REST API経由でのクエリ

パスはデータ登録と同じく/db/データベース名/seriesになります。
HTTPメソッドがGETになり、QueryString:q=でクエリを渡します。

curl -G 'http://localhost:8086/db/test/series?u=root&p=root' -d --data-urlencode "select * from nikkei_average"

結果がJSONで表示されます。

[{"name":"nikkei_average","columns":["time","sequence_number","price"],"points":[[1419778800000,69270001,17729.84],[1419519600000,69280001,17818.96],[1418083200000,69260001,17450.77]]}]

見づらいのでpretty=trueをQueryStringに追加するとインデント表示されます。

curl -G 'http://localhost:8086/db/test/series?u=root&p=root&pretty=true' -d --data-urlencode "select * from nikkei_average"
[
    {
        "name": "nikkei_average",
        "columns": [
            "time",
            "sequence_number",
            "price"
        ],
        "points": [
            [
                1419778800000,
                69270001,
                17729.84
            ],
            [
                1419519600000,
                69280001,
                17818.96
            ],
            [
                1418083200000,
                69260001,
                17450.77
            ]
        ]
    }

ユーザの削除

GUI経由でのユーザの削除

データベース・ユーザを削除します。
ユーザ一覧からXをタップするだけです。

influxdb6.png

REST API経由でのユーザの削除

パスが/db/データベース名/users/ユーザ名になります。
HTTPメソッドはDELETEを使います。

curl -X DELETE 'http://localhost:8086/db/test/users/dbuser?u=root&p=root'

データベースの削除

GUI経由でのデータベースの削除

データベースを削除します。
ユーザの削除と同じくデータベース一覧からXをタップするだけです。

influxdb7.png

REST API経由でのデータベースの削除

パスが/db/データベース名になります。
HTTPメソッドはDELETEを使います。

curl -X DELETE 'http://localhost:8086/db/test?u=root&p=root'
40
50
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
50