influxDB学习总结

摘要:
用户名:密码:=client.NewBatchPoints(client.BatchPointsConfig{Database:})fori:=map[string]接口{}{“idle”:=nil{log.Fattalln(“错误:错误)}bp.AddPoint(pt)}错误:错误:

1.安装

   请参考http://www.cnblogs.com/zhja/p/5996191.html,

   安装完毕运行influxd,http://域名:8083为控制台界面;http://域名:8086为api地址;运行influx进入命令行模式。

2.go操作influxdb
  1)利用influxdb的client,github地址:github.com/influxdata/influxdb/client/v2
  2)创建用户和授权

create user zhja with password 'zhjazhja'
grant all privileges to zhja

  3)创建数据库

create database nfdump

  4)链接influxdb

package main

import (
    "fmt"
    "log"

    "github.com/influxdata/influxdb/client/v2"
)

const (
    MyDB = "nfdump" //数据库名
    username = "zhja" //用户名
    password = "zhjazhja" //密码
)

func main(){
    //链接数据库
    c, err := client.NewHTTPClient(client.HTTPConfig{
        Addr: "http://192.168.210.130:8086",
        Username: username,
        Password: password,
    })

    if err != nil {
        log.Fatalln("Error: ", err)
    }

    fmt.Println(c)
}            

执行结果:

influxDB学习总结第1张

5)influxdb Measurements查看详细介绍
6)批量插入数据

package main

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

"github.com/influxdata/influxdb/client/v2"
)

const (
    MyDB = "nfdump" //数据库名
    username = "zhja" //用户名
    password = "zhjazhja" //密码
)

func main(){
    //链接数据库
    c, err := client.NewHTTPClient(client.HTTPConfig{
        Addr: "http://192.168.210.130:8086",
        Username: username,
        Password: password,
    })

    if err != nil {
        log.Fatalln("Error: ", err)
    }

    writePoints(c, MyDB)
}

func writePoints(c client.Client, MyDB string) {
    sampleSize := 1000
    rand.Seed(42)

    bp, _ := client.NewBatchPoints(client.BatchPointsConfig{
        Database: MyDB,
        Precision: "us",
    })

    for i := 0; i < sampleSize; i++ {
        regions := []string{"us-west1", "us-west2", "us-west3", "us-east1"}
        tags := map[string]string{
            "cpu": "cpu-total",
            "host": fmt.Sprintf("host%d", rand.Intn(1000)),
            "region": regions[rand.Intn(len(regions))],
        }

        idle := rand.Float64() * 100.0
        fields := map[string]interface{}{
            "idle": idle,
            "busy": 100.0 - idle,
        }

        pt, err := client.NewPoint("cpu_usage", tags, fields, time.Now())
        if err != nil {
            log.Fatalln("Error: ", err)
        }

        bp.AddPoint(pt)
    }

    err := c.Write(bp)
    if err != nil {
        log.Fatal(err)
    }
}        

 执行结果:

influxDB学习总结第2张

7)利用sql查询数据,利用上面的数据

package main

import (
    "fmt"
    "log"
    "time"
    "encoding/json"

    "github.com/influxdata/influxdb/client/v2"
)

const (
    MyDB = "nfdump"         //数据库名
    username = "zhja"       //用户名
    password = "zhjazhja"   //密码
    MyMeasurement = "cpu_usage"
)

func main(){
    //链接数据库
    c, err := client.NewHTTPClient(client.HTTPConfig{
        Addr: "http://192.168.210.130:8086",
        Username: username,
        Password: password,
    })

    if err != nil {
        log.Fatalln("Error: ", err)
    }

    //创建数据库
    _, err := queryDB(c, fmt.Sprintf("CREATE DATABASE %s", MyDB))
    if err != nil {
        log.Fatal(err)
    }

    //获取总数
    q := fmt.Sprintf("SELECT count(%s) FROM %s", "*", MyMeasurement)
    res, err := queryDB(c, q)
    if err != nil {
        log.Fatal(err)
    }
    count := res[0].Series[0].Values[0][1]
    log.Printf("Found a total of %v records
", count)

    //获取10条数据并展示
    qs := fmt.Sprintf("SELECT * FROM %s LIMIT %d", MyMeasurement, 20)
    res, err = queryDB(c, qs)
    if err != nil {
        log.Fatal(err)
    }

    for i, row := range res[0].Series[0].Values {
        t, err := time.Parse(time.RFC3339, row[0].(string))
        if err != nil {
            log.Fatal(err)
        }
        //fmt.Println(reflect.TypeOf(row[1]))
        val := row[1].(json.Number)
        log.Printf("[%2d] %s: %s
", i, t.Format(time.Stamp), val)
    }
}

func queryDB(c client.Client, cmd string) (res []client.Result, err error) {
    q := client.Query{
        Command:  cmd,
        Database: MyDB,
    }
    if response, err := c.Query(q); err == nil {
        if response.Error() != nil {
            return res, response.Error()
        }
        res = response.Results
    } else {
        return res, err
    }
    return res, nil
}

 执行结果:

influxDB学习总结第3张


免责声明:文章转载自《influxDB学习总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Entity Framework 6.0 Code First(转)阿里云全球加速的跨境加速的网络解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Scalaz(4)- typeclass:标准类型-Equal,Order,Show,Enum

  Scalaz是由一堆的typeclass组成。每一个typeclass具备自己特殊的功能。用户可以通过随意多态(ad-hoc polymorphism)把这些功能施用在自己定义的类型上。scala这个编程语言借鉴了纯函数编程语言Haskell的许多概念。typeclass这个名字就是从Haskell里引用过来的。只不过在Haskell里用的名称是typ...

史上最全的springmvc入参传递总结

一、springmvc的优势 1、springmvc能够将URL从http的世界中映射到JAVA世界中,这是框架的核心功能,不得不说确实很强大,但非常的容易理解。 2、springmvc对annotation的完没支持,去掉struts2及springbean繁琐的配置文件,提高开发效率。 3、springmvc结合jackson-core,action层...

QString 和 TCHAR 的相互转换

参考资料: http://www.cnblogs.com/fuyanwen/p/3200536.htmlhttp://www.cnblogs.com/wendao/archive/2012/07/27/2612597.html 不能直接用: QString szqFileName = QString::fromLocal8Bit("data");const...

关于vue-router中点击浏览器前进后退地址栏路由变了但是页面没跳转

情景: 在进行正常页面跳转操作后(页面A跳转到页面B),点击浏览器的左上角的‘后退’按钮,点击后,可以看到url地址已经发生了变化(url由页面B变为页面A),hash值也已经是上一页的路由,但是浏览器显示的内容却没有发生变化(依旧是页面B)。 没有任何报错(页面A和页面B无任何js错误或者兼容性错误)。 若有错误也会导致页面跳转不成功,页面依旧是当前页面...

c:if标签--判断不为空和其他的值判断

     用<c:if test=""></c:if>标签时  <c:if test="${sl.chc_status==1 }"><td>未指派</td></c:if> 一直出不来  后来才发现 不同的类型有不同的判断 一,el表达式用法: 1.项目中添加 jstl.jar  ...

MongoDB 4.4 安装 linux

1. 官方链接:  https://docs.mongodb.com/v4.4/tutorial/install-mongodb-enterprise-on-red-hat/ 1、配置存储库。 创建一个/etc/yum.repos.d/mongodb-enterprise-4.4.repo文件,以便您可以使用yum以下命令直接安装 MongoDB 企业版:...