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. 【leetcode】Find Minimum in Rotated Sorted Array II JAVA实现

    一.题目描述 Follow up for "Find Minimum in Rotated Sorted Array":What if duplicates are allowed ...

  2. spring TaskExecutor

    TaskExecutor抽象 Spring 2.0 为执行器(Executor)处理引入了一个新的抽象层.Executor是Java 5的名词,用来表示线程池的概念.之所以用这个奇怪的名词,是因为实际 ...

  3. Twitter Storm如何保证消息不丢失

    storm保证从spout发出的每个tuple都会被完全处理.这篇文章介绍storm是怎么做到这个保证的,以及我们使用者怎么做才能充分利用storm的可靠性特点. 一个tuple被”完全处理”是什么意 ...

  4. 我常用的Linux命令

    CD: ..        —-切换到上层目录 ~        —-回到家目录(/home/你的登录名/) LS: -a        —-显示指定目录所有文件,包括文件名以 . 开头的文件 -l  ...

  5. WCF寄宿方式

    WCF开发框架形成之旅---WCF的几种寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者 ...

  6. 使用Java进行MD5加密

    使用Java自带的MessageDigest类可以轻松实现MD5加密,只不过加密后得到的是byte数组,我们需要将其转换为16进制的字符. 代码如下: package com.stepsoft.tes ...

  7. Python:列表,元组

    一.列表 和字符串一样,列表也是序列类型,因此可以通过下标或者切片操作访问一个或者多个元素.但是,不一样的,列表是容器类型,是可以进行修改.更新的,即当我们进行修改列表元素,加入元素等操作的时候,是对 ...

  8. UIActivityViewController 自定义选项

    UIActivityViewController 自定义选项 重写 UIActivity 类 建议下载github上源码学习一下 https://github.com/samvermette/SVWe ...

  9. poj 3299 Humidex

    直接套公式就可以,可我套公式第一遍都错了,英语差的孩子伤不起(┬_┬) #include <iostream> #include <cmath> #include <io ...

  10. 第三百四十八天 how can I 坚持

    回来的倒不晚,算了不想抱怨了. 晚上回来吃过饭,又看了遍<活着>,把一切悲剧都放在一个人身上了,很朴实,好感人. 一天就写了一个借口,也是醉了. 我的天气预报,我的struts.sprin ...