美文网首页
Go与Docker操作Influxdb

Go与Docker操作Influxdb

作者: Jaeyok | 来源:发表于2020-10-27 16:01 被阅读0次

InfluxDB 是什么

InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。
InfluxDB在DB-Engines的时序数据库类别里排名第一。

Influxdb

首先使用docker拉取Influxdb镜像文件

docker pull influxdb

查看docker 镜像目录

$ docker images
REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
influxdb                 latest              c15aefdd926b        13 days ago         307MB

看到influxdb镜像已经导入,接下来进入到influxdb镜像。

docker run -d -p 8083:8083 -p8086:8086 --expose 8090 --expose 8099 --name influx influxdb

之前安装过influxdb的,可能8086和8083端口被占用,我们需要kill掉占用端口的应用服务。我们先查看哪些服务占用了端口。首先转到root模式查看服务,才能正常显示。

//端口被占用
docker: Error response from daemon: driver failed programming external connectivity on endpoint influxsrv (4a60b0b085f5af7b8343551dd6295d084adab4b7787ffde9bc261c6cc9b488fa): Error starting userland proxy: listen tcp 0.0.0.0:8086: bind: address already in use.
~$ sudo su
root@wanziyu-KLV-WX9:/home/hadoop# netstat -ntpl |grep 8086
tcp6       0      0 :::8086                 :::*                    LISTEN     1839/influx

发现pid 号为1839的服务进程占用了8086端口,因为我们之前在本地运行过influxd程序,接下来我们kill掉这个程序。

sudo kill -9 1839

再次docker run influxdb,若8083端口也被占用重复此方法kill掉占用的服务进程。

docker run -d -p 8083:8083 -p8086:8086 --expose 8090 --expose 8099 --name influx influxdb

若遇到以下错误,说明之前使用过名字为influx的容器,我们需要将之前的容器remove或者rename。

docker: Error response from daemon: Conflict. The container name "/influx" is already in use by container "f9b59bd1c86ac92501dc352d1a55aa5dc1f3c50ef189db2a810f2a56aa6eb755". You have to remove (or rename) that container to be able to reuse that name.

//remore influx容器
docker rm influx

然后重新docker run,这样就运行了influx容器,然后使用docker exec -it influxdb bash进入influxdb

$ docker exec -it influxdb bash
root@06c57470fae5:/# influx
Connected to http://localhost:8086 version 1.8.3
InfluxDB shell version: 1.8.3
> 

看到>符号,说明进入Influxdb成功,我们接下来创建一个database,命名为test.

> create database test
> show databases
name: databases
name
----
_internal
test

创建成功,接下来使用Go语言操作数据库。

首先用go get方法获取github上的influxdata包

go get github.com/influxdata/influxdb1-client/v2

然后导入我个人的Influx包

go get github.com/wanziyu/IoTKit

获取成功之后,新建一个main.go文件,输入以下代码。

package main

import (
    "fmt"
    influx "github.com/wanziyu/IoTKit/timedb/Influx"
    "log"
)

func main() {
    conn := influx.ConnInflux()
    fmt.Println(conn)
    var dbname = "test"
    var fields = map[string]interface{}{
        "idle":   201.1,
        "system": 43.3,
        "user":   86.6,
    }

    influx.WritePoints(conn, dbname, fields)

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

    for _, row := range res[0].Series[0].Values {
        for j, value := range row {
            log.Printf("j:%d value:%v\n", j, value)
        }
    }
}

编译并运行之后就写入了influxdb数据库。我们接下来查看数据库中名字为cpu_usage的measurement(数据表)。

>use test
using database test
> select * from cpu_usage  limit 10;
name: cpu_usage
time                cpu    idle  system user
----                ---    ----  ------ ----
1603784019000000000 ih-cpu 201.1 43.3   86.6
1603784040000000000 ih-cpu 201.1 43.3   86.6

我们可以看到数据已经导入了两行,因为我们每运行一次就导入了一组Point。大功告成啦。

相关文章

  • Go与Docker操作Influxdb

    InfluxDB 是什么 InfluxDB 是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。...

  • influxDB

    本文介绍了influxDB时序数据库及Go语言操作influxDB。 InfluxDB是一个开源分布式时序、事件和...

  • InfluxDB Docker

    1. 在Docker库中查找influxDB镜像 docker search influxdb# 在Docker库...

  • 2019-01-05

    date[2019-01-05] go并发编程案例解析 influxdb的简单使用 一、influxdb与传统数据...

  • go influxdb

    go influxdb

  • docker安装influxdb

    docker run -d -p 8086:8086 -v influxdb:/var/lib/influxdb ...

  • fabric相关要学习的东西

    1.Linux操作系统基本操作2.go(Java)3.docker(dockerfile,docker-compo...

  • Docker监控套件(Telegraf+Influxdb+Gra

    Docker监控套件(Telegraf+Influxdb+Grafana)研究与实践 如今,云计算以及DevOps...

  • Influxdb启动流程分析

    Influxdb启动流程 Influxdb的启动代码实现在 cmd/influxd/main.go中 influx...

  • Kubernetes监控之InfluxDB

    什么是InfluxDB? InfluxDB介绍 InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数...

网友评论

      本文标题:Go与Docker操作Influxdb

      本文链接:https://www.haomeiwen.com/subject/hfexvktx.html