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)
}

执行结果:

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)
}
}

执行结果:

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\n", 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\n", 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学习总结的更多相关文章

  1. InfluxDB学习之InfluxDB的HTTP API查询操作

    在 InfluxDB学习 的上一篇文章:InfluxDB学习之InfluxDB的HTTP API写入操作 中,我们介绍了使用InfluxDB的HTTP API进行数据写入操作的过程,本文我们再来介绍下 ...

  2. InfluxDB学习系列教程,InfluxDB入门必备教程

    nfluxDB是一个当下比较流行的时序数据库,InfluxDB使用 Go 语言编写,无需外部依赖,安装配置非常方便,适合构建大型分布式系统的监控系统. 本文是一系列InfluxDB学习教程的目录,现主 ...

  3. InfluxDB学习之InfluxDB连续查询(Continuous Queries)

    在上一篇:InfluxDB学习之InfluxDB数据保留策略(Retention Policies) 中,我们介绍了 InfluxDB的数据保留策略,数据超过保存策略里指定的时间之后,就会被删除. 但 ...

  4. InfluxDB学习之InfluxDB的HTTP API写入操作

    HTTP API也有两种操作:写入和查询,本文就先给大家介绍一下 InfluxDB的HTTP API的写入操作方式.     在InfluxDB学习的上一篇文章:InfluxDB学习之InfluxDB ...

  5. InfluxDB学习之InfluxDB的安装和简介

    最近用到了 InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学. 本文主要介绍InfluxDB的功能特点以及influxDB的安装过程.更多InfluxDB详细教程请看:Infl ...

  6. InfluxDB学习之InfluxDB的基本操作| Linux大学

    来源地址:https://www.linuxdaxue.com/influxdb-study-series-manual.html 本文属于<InfluxDB系列教程>文章系列,该系列共包 ...

  7. InfluxDB学习之InfluxDB数据保留策略(Retention Policies)

    InfluxDB每秒可以处理成千上万条数据,要将这些数据全部保存下来会占用大量的存储空间,有时我们可能并不需要将所有历史数据进行存储,因此,InfluxDB推出了数据保留策略(Retention Po ...

  8. InfluxDB学习之InfluxDB的基本操作

    InfluxDB提供类SQL语法,如果熟悉SQL的话会非常容易上手.本文就为大家介绍一下InfluxDB的基本操作.     InfluxDB提供类SQL语法,如果熟悉SQL的话会非常容易上手. 本文 ...

  9. InfluxDB学习之InfluxDB的基本概念

    InfluxDB与传统数据库在概念上有许多的不同,本文就给大家介绍下InfluxDB中的一些基本概念,更多InfluxDB详细教程请看:InfluxDB系列学习教程目录 InfluxDB技术交流群:5 ...

随机推荐

  1. YII Framework学习教程-YII的异常处理

    异常无处不在,作为程序员,活着就是为了创造这些异常,然后修复这些异常而存在的.YII框架封装了PHP的异常,让异常处理起来更简单. 使用 YII处理错误和异常的配置方法: 你可以在入口文件中定义YII ...

  2. mysql 用户名密码登陆不上

    问题1:刚安装完mysql,设置了用户名密码root,登陆OK的,后来再连怎么也连不上了 操作步骤: 输入:mysql -uroot -proot 提示:ERROR 1045 (28000): Acc ...

  3. Groovy读取properties及txt

    昨晚帮老同事解决了一个SoapUI的代码问题,好长时间没用SoapUI,好多东西都忘了,今天先总结下Groovy读取properties 首先吐槽下SoapUI的apidocs,我几乎从中看不出什么东 ...

  4. 使用clipboard.js复制页面内容到剪切板

    最近在做一个的智能客服Web端浏览器应用,其中有一项需求是客户在获取系统返回的 答案后点击“复制答案”按钮将答案复制到系统剪切板.本以为这是一个小case,但是发现如果 要对各种主流浏览器都有良好的兼 ...

  5. win7 共享的问题,"您可能没有权限使用网络资源"的解决办法

    重点来了,如果以上方法都不行的话,下面这个绝对有效,本人屡试不爽.1 打开受访者的guest权限2 开始--运行--gpedit.msc3 windows设置---安全设置--本地策略--用户权利指派 ...

  6. Container View Controller

    有时候,我们的Controler中包含有另一个controler view的view时,可以使用这种方式. https://developer.apple.com/library/ios/featur ...

  7. HDU ACM 1134 Game of Connections / 1130 How Many Trees?(卡特兰数)

    [题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=1134 [解题背景]这题不会做,自己推公式推了一段时间,将n=3和n=4的情况列出来了,只发现第n项与 ...

  8. T-SQL 变量

    T-SQL变量 变量的种类: 在T-SQL中,变量按生存范围可以分为全局变量(Global Variable)和局部变量(Local Variable) 1.全局变量是由系统定义的,在整个SQL Se ...

  9. cocos2d-x 2.2.5 安卓工程编译的问题

    原址:http://www.cocoachina.com/bbs/read.php?tid=217124 新的cocos2d-x 2.2.5 在使用Eclipse的安卓NDK 9 的编译器进行编译的时 ...

  10. 【转】MySQL日期时间函数大全

    MySQL日期时间函数大全 1.DAYOFWEEK(date)  返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK( ...