influxdbのインストールと簡単な使用

8566 ワード

influxdbの簡単な使用リファレンスhttps://blog.51cto.com/caimengzhi/1895306 作者に感謝!以前はinfluxdbについて簡単な理解と入門の使用がありましたが、最近はinfluxdbを使って何かをして遊びたいので、influxdbを拾います.本編ではinfluxdbのデータベース・テーブルの概念について,添削・変更操作,RESTful操作などについてまとめる.
一、influxdbと従来のデータベースの比較ライブラリ、テーブルなどの比較:
    influxDB             
    database       
    measurement       
    points          
    influxdb     :

Pointはタイムスタンプ(time)、データ(field)、タグ(tags)からなる.
    Point            
    time            ,         (     )
    fields       (       )       :  ,   
    tags            :  ,  

ここではもう一つの名詞:series:
データベース内のすべてのデータは、グラフで表示する必要がありますが、このseriesはこのテーブルのデータを表し、グラフにいくつかの線を描くことができます.tags配列グループで計算します.具体的にはSHOW SERIES FROM「テーブル名」で問い合わせることができます.
influxdbで使用されるポートは次のとおりです.
    8083: Web admin       , http://localhost:8083
    8086: HTTP API   
    8088:     (        ,       bind-address,          )

二、インストール及び添削変更1、インストール#wgethttps://dl.influxdata.com/influxdb/releases/influxdb-1.1.0.x86_64.rpm#rpm -ivh influxdb-1.1.0.x86_64.rpm#systemctl enable influxdb#systemctl start influxdb注:この例はcentos 7/rhel 7で構成されたサービスで、rhel 6でserviceを使用してサービス構成および起動できます.
2、コマンドラインの下での作成とクエリーはinfluxコマンドで管理され、次のコマンドでデータベースを作成できます.
    > CREATE DATABASE "testDB"
    > show databases   //          
    > show databases
    name: databases
    ---------------
    name
    _internal
    testDB
    > use testDB   //       

ライブラリを作成する操作はmysqlの下の操作と非常に似ていることがわかります.一方、influxdbの下に細分化されていないテーブルの概念では、influxdbの下のテーブルはデータベースを挿入するときに自動的に作成されます.SHOW measurementsコマンドですべてのテーブルを表示できます.これはmysqlの下のshow tablesに似ています.
    > INSERT cpu,host=serverA,region=us_west value=0.64  // cpu         
    > SELECT * FROM cpu ORDER BY time DESC LIMIT 3  //         
    > SELECT * FROM /.*/ LIMIT 1  //       
    > delete from cpu where time=1480235366557373922  //      
    > DROP MEASUREMENT "measurementName"  //   

update更新文はありませんが、alterコマンドがあり、influxdbでは削除操作用と更新はほとんどありません.データ保存ポリシーについては、後で説明する特殊な削除方法があります.
ユーザーの操作は次のとおりです.
    #    
    SHOW USERS
    #    
    CREATE USER "username" WITH PASSWORD 'password'
    #          
    CREATE USER "username" WITH PASSWORD 'password' WITH ALL PRIVILEGES
    #    
    DROP USER "username"

influxdbの権限設定は比較的簡単で、読み取り、書き込み、ALLの数種類しかありません.詳細なユーザー権限設定は、公式ドキュメントを参照してください.https://docs.influxdata.com/influxdb/v1.0/query_language/authentication_and_authorization/.デフォルトでは、influxdbはmongodbと同様にユーザー認証をオンにしません.confファイルを変更してhttpブロックの内容を以下のように構成できます.
    [http]
        enable = true
        bind-address = ":8086"
        auth-enabled = true  #     

三、データ保存ポリシー及び連続クエリー1、データ保存ポリシー一般的には時間系列に基づくpointデータは直接削除操作を行わない.一般的に、私たちは普段現在のデータだけに関心を持っており、履歴データはずっと保存する必要はない.そうしないと、スペースが多すぎる.ここでは、データ保存ポリシー(Retention Policies)を設定し、指定した時間を超えると削除されます.
    SHOW RETENTION POLICIES ON "testDB"    //        Retention Policies
    CREATE RETENTION POLICY "rp_name" ON "db_name" DURATION 30d REPLICATION 1 DEFAULT  //    Retention Policies
    #    :
    rp_name:   
    db_name:       
    30d:  30 ,30          
             ,  :h(  ),w(  )
    REPLICATION 1:    ,   1    
    DEFAULT        

次のコマンドでポリシーを変更および削除することもできます.
    ALTER RETENTION POLICY "rp_name" ON db_name" DURATION 3w DEFAULT
    DROP RETENTION POLICY "rp_name" ON "db_name"

2.連続クエリ(Continuous Queries)データが保存ポリシーで指定された時間を超えると削除されます.もし私たちが完全に削除したくないならば、例えば1つのデータ統計サンプリングをします:元の毎秒のデータを、1時間ごとのデータとして保存して、データの占有する空間を大幅に減らします(精度を下げる代わりに).これには、InfluxDBが提供する連続クエリー(Continuous Queries)が必要です.
現在のクエリー・ポリシーの表示
    SHOW CONTINUOUS QUERIES

新しいContinuous Queriesの作成
    CREATE CONTINUOUS QUERY cq_30m ON testDB BEGIN SELECT mean(temperature) INTO weather30m FROM weather GROUP BY time(30m) END
        :
    cq_30m:       
    testDB:       
    mean(temperature):      
    weather:     
    weather30m:        
    30m:     30  

新しいデータを挿入すると、SHOW MEASUREMENTSクエリで発見されます.データベースにweather 30 mという名前のものが1枚増えていることがわかります(計算済みのデータが保存されています).これらはすべてContinuous Queriesによって自動的に完了します.
Continuous Queriesの削除
    DROP CONTINUOUS QUERY  ON 

四、RESTfulインタフェース操作挿入及び照会操作:
    #code from www.361way.com
    now=$(date '+%FT%T.000Z')
    tomorrow=$(date -v +1d '+%FT%T.000Z')
    echo "creating database"
    curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE foo"
    echo "creating retention policy"
    curl -G http://localhost:8086/query --data-urlencode "q=CREATE RETENTION POLICY bar ON foo DURATION INF REPLICATION 1 DEFAULT"
    echo "inserting data"
    curl -d "{\"database\" : \"foo\", \"retentionPolicy\" : \"bar\", \"points\": [{\"measurement\": \"cpu\", \"tags\": {\"region\":\"uswest\",\"host\": \"server01\"},\"time\": \"$now\",\"fields\": {\"value\": 100}}]}" -H "Content-Type: application/json" http://localhost:8086/write
    echo "inserting data"
    curl -d "{\"database\" : \"foo\", \"retentionPolicy\" : \"bar\", \"points\": [{\"measurement\": \"cpu\", \"tags\": {\"region\":\"uswest\",\"host\": \"server01\"},\"time\": \"$tomorrow\",\"fields\": {\"value\": 200}}]}" -H "Content-Type: application/json" http://localhost:8086/write
    sleep 1
    echo "querying data"
    curl -G http://localhost:8086/query --data-urlencode "db=foo" --data-urlencode "q=SELECT count(value) FROM \"foo\".\"bar\".cpu"
    echo "querying data"
    curl -G http://localhost:8086/query --data-urlencode "db=foo" --data-urlencode "q=SELECT count(value) FROM \"foo\".\"bar\".cpu where time < now() + 10d"

GZIP圧縮データ挿入と照会:
    #code from www.361way.com
    echo "inserting data"
    curl -v -i -H "Content-encoding: gzip" -H "Content-Type: application/json" -X POST -T foo.json.gz http://localhost:8086/write
    rm foo.json.gz
    echo "querying data with gzip encoding"
    curl -v -G --compressed http://localhost:8086/query --data-urlencode "db=foo" --data-urlencode "q=SELECT sum(value) FROM \"foo\".\"bar\".cpu GROUP BY time(1h)"

データ保存ポリシーおよびテーブルのキー値の挿入も指定できます.
    echo "creating retention policy"
    curl -G http://localhost:8086/query --data-urlencode "q=CREATE RETENTION POLICY bar ON foo DURATION 300d REPLICATION 3 DEFAULT"
    curl -d '{"database" : "foo", "retentionPolicy" : "bar", "points": [{"measurement": "network", "tags": {"host": "server01","region":"uswest"},"time": "2015-02-26T22:01:11.703Z","fields": {"rx": 2342,"tx": 9804}}]}' -H "Content-Type: application/json" http://localhost:8086/write
    curl -d '{"database" : "foo", "retentionPolicy" : "bar", "points": [{"measurement": "network", "tags": {"host": "server01","region":"useast"},"time": "2015-02-27T22:01:11.703Z","fields": {"rx": 4324,"tx": 7930}}]}' -H "Content-Type: application/json" http://localhost:8086/write

詳細はgithubのテスト内容を参照してください.
influxであれRESETfulパラメータであれ、perttyパラメータであれば、出力のjsonフォーマットをより美しくすることができます.このほか、influxコマンドにはcolumn、CSVなどのフォーマット出力があり、influxコマンドはimportパラメータでクラスcsvクラスフォーマットのデータを入力することをサポートします.
五、influxdb.confはwebを構成して現在のバージョンのinfluxdbを管理し、デフォルトではweb管理機能がオンになっていない.influxdb.confファイルのadmin項目の構成を変更することで、Web管理インタフェースを開くことができます.具体的には、次のとおりです.
    [admin]
        #Determines whether the admin service is enabled.
        enabled = true
        #The default bind address used by the admin service.
        bind-address = ":8083"

転載先:https://blog.51cto.com/oybw88/2107228