日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

從采集到分析-TSDB For InfluxDB?讓你的數據產生價值

更新時間:

數據無處不在,價值無處不在。在時序數據庫領域,TSDB For InfluxDB?作為一款數據存儲分析的利刃,在生產和開發環境中得到了比較廣泛的應用。本文主要講述如何將你的數據搬遷上云,讓你的數據產生更大的價值。

了解我們-TSDB For InfluxDB?

TSDB For InfluxDB?是一款專門處理高寫入和查詢負載的時序數據庫,用于存儲大規模的時序數據并進行實時分析,包括來自DevOps監控、應用指標和IoT傳感器上的數據。它的主要特點如下:

  • 專為時間序列數據量身訂造高性能數據存儲。TSM引擎提供數據高速讀寫和壓縮等功能。

  • 簡單高效的HTTP API寫入和查詢接口。

  • 針對時序數據,量身訂造類似SQL的查詢語言,輕松查詢聚合數據。

  • 允許對tag建索引,實現快速有效的查詢。

  • 數據保留策略(Retention policies)能夠有效地使舊數據自動失效。

在阿里云購買成功之后,我們需要創建數據庫賬戶和密碼,設置存儲策略。通過實例詳情頁面可以查看訪問TSDB For InfluxDB?的方式,目前提供兩種HTTP訪問地址:VPC網絡(什么是專有網絡,相同VPC內的云產品實例可以相互訪問)與公共網絡(需購買時開通,內外部網絡都可訪問),均開通了HTTPS加密驗證,注意接入時使用HTTPS通道

實例生產完成后可以在管理用戶賬號和數據庫用戶test和數據庫test,并保證用戶test對數據庫test具有讀寫權限。

Telegraf-數據的搬運工

Telegraf是一個用Go語言編寫的代理程序,可采集系統和服務的統計數據,并寫入TSDB For InfluxDB?數據庫。Telegraf具有內存占用小的特點,通過插件系統開發人員可輕松添加支持其他服務的擴展。Telegraf安裝完成后,數據可以用HTTP方式寫入TSDB For InfluxDB?。

urls選擇實例詳情中的公網或者VPC訪問地址,修改上圖標記中的寫入的數據庫和存儲策略,存儲策略在不填的情況下將會寫入該數據庫默認存儲策略中。TSDB For InfluxDB?采用認證的方式寫入,在填寫username和password之前需要確保該賬號對數據庫具有寫權限。關于權限可以在實例管理->賬號管理中進行設置。完成這些操作之后,Telegraf采集的數據便可以寫入到TSDB For InfluxDB?中。

啟動Telegraf

Ubuntu, Debian, RedHat, CentOS啟動

sudo service telegraf start

Ubuntu 15.04+, Debian 8+, CentOS 7+, RHEL 7+啟動

sudo systemctl start telegraf

客戶端寫入-不一樣的風格

InfluxDB開源社區提供了豐富的SDK,基本上涵蓋了主流了編程語言,TSDB For InfluxDB?完全兼容各種客戶端。下面將介紹幾種主要的寫入方式:

Go寫入方式

package main

import(
"fmt"
"log"
"math/rand"
"net/url"
"time"

    client "github.com/influxdata/influxdb1-client"
)

func main(){
    host, err := url.Parse(fmt.Sprintf("https://%s:%d","xxx.influxdata.rds.aliyuncs.com",3242))
if err !=nil{
        log.Fatal(err)
}
    config := client.Config{
        URL:*host,
Username:"test",
Password:"test",
}
    con, err := client.NewClient(config)
if err !=nil{
        log.Fatal(err)
}

    _, _, err = con.Ping()
if err !=nil{
        log.Fatal(err)
}

var(
        shapes     =[]string{"circle","rectangle","square","triangle"}
        colors     =[]string{"red","blue","green"}
        sampleSize =1000
        pts        = make([]client.Point, sampleSize)
)

    rand.Seed(42)
for i :=0; i < sampleSize; i++{
        pts[i]= client.Point{
Measurement:"shapes",
Tags: map[string]string{
"color": colors[rand.Intn(len(colors))],
"shape": shapes[rand.Intn(len(shapes))],
},
Fields: map[string]interface{}{
"value": rand.Intn(sampleSize),
},
Time:      time.Now(),
}
}

    bps := client.BatchPoints{
Points:          pts,
Database:"test",
RetentionPolicy:"autogen",
}
    _, err = con.Write(bps)
if err !=nil{
        log.Fatal(err)
}
}

HTTP連接配置中需要指明實例的公網或者VPC地址和數據庫用戶、密碼(具體可以在實例管理中查詢)。在寫入前指定數據寫入的數據庫和保留策略(如果不指定,則寫入默認的保留策略),數據可以按行或者Batch的方式寫入。為了提高寫入吞吐,推薦Batch的寫入方式,Batch行數按數據大小可以在100~1000行左右。SDK下載,請參見地址,程序編譯執行命令為go run main.go

JAVA寫入方式

package main;

import java.util.concurrent.TimeUnit;
import org.influxdb.InfluxDB;
import org.influxdb.BatchOptions;
import org.influxdb.InfluxDBFactory;
import org.influxdb.dto.Point;


publicclassStartMain{

publicstaticvoid main(String[] args)throwsException{
StartMain startMain =newStartMain();
try{
            startMain.run();
}catch(Exception e){
System.out.println(e);
}
}

publicvoid run()throwsException{

InfluxDB influxDB =InfluxDBFactory.connect("https://xxx.influxdata.rds.aliyuncs.com:3242","test","test");

String dbName ="test";
        influxDB.setDatabase(dbName);
String rpName ="autogen";
        influxDB.setRetentionPolicy(rpName);
        influxDB.enableBatch(BatchOptions.DEFAULTS);

        influxDB.write(Point.measurement("cpu")
.time(System.currentTimeMillis(),TimeUnit.MILLISECONDS)
.addField("idle",90L)
.addField("user",9L)
.addField("system",1L)
.build());

        influxDB.write(Point.measurement("disk")
.time(System.currentTimeMillis(),TimeUnit.MILLISECONDS)
.addField("used",80L)
.addField("free",1L)
.build());

        influxDB.close();
}
}

Java SDK下載見地址,在enableBatch中設置異常捕捉函數可以處理寫入異常。

influxDB.enableBatch(BatchOptions.DEFAULTS.exceptionHandler(
(failedPoints, throwable)->{/* custom error handling here */})
);

Influx CLI寫入

TSDB for InfluxDB?支持命令行界面Influx CLI,連接時需指定ssl、host、port、username和password:

influx -ssl -host xxx.influxdata.rds.aliyuncs.com -port 3242-username admin -password admin

客戶端上通過行寫入協議可以將數據寫入TSDB For InfluxDB?,如:

> INSERT cpu,host=serverA,region=us_west value=0.64

Shell寫入

curl -i -XPOST -u test:test  'https://xxx.influxdata.rds.aliyuncs.com:3242/write?db=test'--data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000'

Shell的具體用法可以參考HTTP API

Shell的具體用法可以參考HTTP API

數據分析

目前TSDB For InfluxDB?支持豐富的類SQL查詢,非常方便從業者使用。

下面示例是查詢每組color的平均值:

> SELECT MEAN("value") FROM "shapes" GROUP BY "color"
name: shapes
tags: color=blue
time mean
--------
0216.25

name: shapes
tags: color=green
time mean
--------
0434.25

name: shapes
tags: color=red
time mean
--------
0540.25

InfluxDB? is a trademark registered by InfluxData, which is not affiliated with, and does not endorse, TSDB for InfluxDB?.