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. 使用java开源工具httpClient及jsoup抓取解析网页数据

    今天做项目的时候遇到这样一个需求,需要在网页上展示今日黄历信息,数据格式如下 公历时间:2016年04月11日 星期一 农历时间:猴年三月初五 天干地支:丙申年 壬辰月 癸亥日 宜:求子 祈福 开光 ...

  2. Red and Black ---路线问题

    There is a rectangular room, covered with square tiles. Each tile is colored either red or black. A ...

  3. Cocos2d-android (04) 执行多个动作

    先后.同时执行多个动作及动作序列执行结束后的事件 import org.cocos2d.actions.instant.CCCallFunc; import org.cocos2d.actions.i ...

  4. CListCtrl总结.xml

    pre{ line-height:1; color:#d1653c; background-color:#000000; font-size:16px;}.sysFunc{color:#566d68; ...

  5. shell 中awk、if while 例子

    1.if while命令写在一行中while read a b;do echo $a $b;done < aa.txt12 13 14cat aa.txt12 13 14if [[ $i -eq ...

  6. ubuntu 下安装sh 文件

    1. cd 到 指定文件夹 如: cd /home/ddy/下载 2. sudo chmod +x *.sh 3. sudo ./*.sh ok 了 (1)数据预处理    可以用下载好的数据集,也可 ...

  7. linux c 多线程编程

    linux 下 c 语言多线程: /* 06.3.6 Mhello1.c Hello,world -- Multile Thread */ #include<stdio.h> #inclu ...

  8. 如何杀掉当前正在执行的hadoop任务

    [root@Slave01 ~]# hadoop job -listDEPRECATED: Use of this script to execute mapred command is deprec ...

  9. Git 常用操作。

    1.本地文件被修改后,却想要撤销所有的修改. SVN中可以简单地将被修改的文件直接删除,重新Update一下. Git中本以为可以将文件直接删除然后pull一下,然而却是不行的. 可以使用Revert ...

  10. 《学习OpenCV》练习题第四章第三题b

    #include <highgui.h> #include <cv.h> #include "opencv_libs.h" /* *<学习OpenCV ...