influxdb使用說明

前言


influxdb是目前比較流行的時間序列數據庫。linux

  • 何謂時間序列數據庫?
    什麼是時間序列數據庫,最簡單的定義就是數據格式裏包含Timestamp字段的數據,好比某一時間環境的溫度,CPU的使用率等。可是,有什麼數據不包含Timestamp呢?幾乎全部的數據其實均可以打上一個Timestamp字段。時間序列數據的更重要的一個屬性是如何去查詢它,包括數據的過濾,計算等等。

Influxdb

Influxdb是一個開源的分佈式時序、時間和指標數據庫,使用go語言編寫,無需外部依賴。
它有三大特性:web

  1. 時序性(Time Series):與時間相關的函數的靈活使用(諸如最大、最小、求和等);
  2. 度量(Metrics):對實時大量數據進行計算;
  3. 事件(Event):支持任意的事件數據,換句話說,任意事件的數據咱們均可以作操做。

同時,它有如下幾大特色:sql

  • schemaless(無結構),能夠是任意數量的列;
  • min, max, sum, count, mean, median 一系列函數,方便統計;
  • Native HTTP API, 內置http支持,使用http讀寫;
  • Powerful Query Language 相似sql;
  • Built-in Explorer 自帶管理工具。

Influxdb安裝


注:本文使用的influxdb version是1.0.2docker

在講解具體的安裝步驟以前,先說說influxdb的兩個http端口:8083和8086shell

  • port 8083:管理頁面端口,訪問localhost:8083能夠進入你本機的influxdb管理頁面;
  • port 8086:http鏈接influxdb client端口,通常使用該端口往本機的influxdb讀寫數據。

OS X數據庫

brew update
brew install influxdb

Docker Imageless

docker pull influxdb

Ubuntu & Debiancurl

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.0.2_amd64.deb
sudo dpkg -i influxdb_1.0.2_amd64.deb

RedHat & CentOS分佈式

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2.x86_64.rpm
sudo yum localinstall influxdb-1.0.2.x86_64.rpm

Standalone Linux Binaries (64-bit)函數

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2_linux_amd64.tar.gz  
tar xvfz influxdb-1.0.2_linux_amd64.tar.gz

Standalone Linux Binaries (32-bit)

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2_linux_i386.tar.gz
tar xvfz influxdb-1.0.2_linux_i386.tar.gz

Standalone Linux Binaries (ARM)

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.0.2_linux_armhf.tar.gz
tar xvfz influxdb-1.0.2_linux_armhf.tar.gz

How to start?
安裝完以後,如何啓動呢?

sudo service influxdb start

到這裏influxdb安裝啓動完成,能夠訪問influxdb管理頁面:本地管理頁面,該版本沒有登陸用戶及密碼,能夠自行設置讀寫的用戶名和密碼。

如何在命令行使用
安裝完畢以後,如何在命令行使用呢?


influxdb在命令行中使用

influxdb基本操做


名詞解釋

在具體的講解influxdb的相關操做以前先說說influxdb的一些專有名詞,這些名詞表明什麼。

influxdb相關名詞
  • database:數據庫;
  • measurement:數據庫中的表;
  • points:表裏面的一行數據。
influxDB中獨有的一些概念

Point由時間戳(time)、數據(field)和標籤(tags)組成。

  • time:每條數據記錄的時間,也是數據庫自動生成的主索引;
  • fields:各類記錄的值;
  • tags:各類有索引的屬性。

還有一個重要的名詞:series
全部在數據庫中的數據,都須要經過圖表來表示,series表示這個表裏面的全部的數據能夠在圖標上畫成幾條線(注:線條的個數由tags排列組合計算出來)
舉個簡單的小栗子:
有以下數據:


error_time

它的series爲:


error_time_series

influxdb基本操做

  • 數據庫與表的操做
    能夠直接在web管理頁面作操做,固然也能夠命令行。

    #建立數據庫
    create database "db_name" #顯示全部的數據庫 show databases #刪除數據庫 drop database "db_name" #使用數據庫 use db_name #顯示該數據庫中全部的表 show measurements #建立表,直接在插入數據的時候指定表名 insert test,host=127.0.0.1,monitor_name=test count=1 #刪除表 drop measurement "measurement_name"

  • 向數據庫中插入數據。

    • 經過命令行
      use testDb insert test,host=127.0.0.1,monitor_name=test count=1
    • 經過http接口
      curl -i -XPOST 'http://127.0.0.1:8086/write?db=testDb' --data-binary 'test,host=127.0.0.1,monitor_name=test count=1'

    讀者看到這裏可能會觀察到插入的數據的格式貌似比較奇怪,這是由於influxDB存儲數據採用的是Line Protocol格式。那麼何謂Line Protoco格式?

    Line Protocol格式:寫入數據庫的Point的固定格式。
    在上面的兩種插入數據的方法中都有這樣的一部分:

    test,host=127.0.0.1,monitor_name=test count=1

    其中:

    1. test:表名;
    2. host=127.0.0.1,monitor_name=test:tag;
    3. count=1:field

    想對此格式有詳細的瞭解參見官方文檔


  • 查詢數據庫中的數據。

    • 經過命令行
      select * from test order by time desc
    • 經過http接口
      curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=testDb" --data-urlencode "q=select * from test order by time desc"

    influxDB是支持類sql語句的,具體的查詢語法都差很少,這裏就再也不作詳細的贅述了。

  • 數據保存策略(Retention Policies)
    influxDB是沒有提供直接刪除數據記錄的方法,可是提供數據保存策略,主要用於指定數據保留時間,超過指定時間,就刪除這部分數據。

    • 查看當前數據庫Retention Policies
      show retention policies on "db_name"

      retention_policies
    • 建立新的Retention Policies
      create retention policy "rp_name" on "db_name" duration 3w replication 1 default
      • rp_name:策略名;
      • db_name:具體的數據庫名;
      • 3w:保存3周,3周以前的數據將被刪除,influxdb具備各類事件參數,好比:h(小時),d(天),w(星期);
      • replication 1:副本個數,通常爲1就能夠了;
      • default:設置爲默認策略
    • 修改Retention Policies
      alter retention policy "rp_name" on "db_name" duration 30d default
    • 刪除Retention Policies
      drop retention policy "rp_name"
  • 連續查詢(Continous Queries)
    當數據超過保存策略裏指定的時間以後就會被刪除,可是這時候可能並不想數據被徹底刪掉,怎麼辦?
    influxdb提供了聯繫查詢,能夠作數據統計採樣。
    • 查看數據庫的Continous Queries
      show continuous queries

      continuous_queries.
    • 建立新的Continous Queries
      create continous query cq_name on db_name begin select sum(count) into new_table_name from table_name group by time(30m) end
      • cq_name:連續查詢名字;
      • db_name:數據庫名字;
      • sum(count):計算總和;
      • table_name:當前表名;
      • new_table_name:存新的數據的表名;
      • 30m:時間間隔爲30分鐘
    • 刪除Continous Queries
      drop continous query cp_name on db_name
  • 用戶管理
    能夠直接在web管理頁面作操做,也能夠命令行。
    #顯示用戶  
    show users #建立用戶 create user "username" with password 'password' #建立管理員權限用戶create user "username" with password 'password' with all privileges #刪除用戶 drop user "username"
相關文章
相關標籤/搜索