更新时间:2023-11-21 gmt 08:00

通过go语言连接实例-凯发k8国际娱乐官网入口

本章节介绍了通过go语言连接geminidb influx实例的方法。

前提条件

  • 获取ssl默认证书,具体操作请参见。
  • 配置ccm私有证书,具体操作请参见。
  • 获取客户端相关代码,请自主从下载。

使用非ssl方式连接实例的示例代码

package main
import (
    "fmt"
    _ "github.com/influxdata/influxdb1-client" // this is important because of the bug in go mod
    client "github.com/influxdata/influxdb1-client/v2"
)
func main(){
    c, err := client.newhttpclient(client.httpconfig{
        addr: "http://ip:port",
        username: "******",
        password: "******",
    })
    if err != nil {
        fmt.println("error creating influxdb client: ", err.error())
    }
    q := client.newquery("select * from cpu","db0","ns")
    if response, err := c.query(q); err == nil && response.error() == nil {
        fmt.println("the result is: ",response.results)
    } 
}

使用默认ssl证书连接实例的示例代码

package main
import (
    "fmt"
    _ "github.com/influxdata/influxdb1-client" // this is important because of the bug in go mod
    client "github.com/influxdata/influxdb1-client/v2"
)
func main(){
    c, err := client.newhttpclient(client.httpconfig{
        addr: "https://ip:port",
        username:"******",
        password:"******",
        insecureskipverify: true, // true表示不验证服务端的信息,可能存在被攻击的风险,建议设为false,具体请参见使用ccm私有证书连接实例的示例代码。
    })
    if err != nil {
        fmt.println("error creating influxdb client: ", err.error())
    }
    q := client.newquery("select * from cpu","databases","ns")
    if response, err := c.query(q); err == nil && response.error() == nil {
        fmt.println(response.results)
    }
}

使用ccm私有证书连接实例的示例代码

package main
import (
    "fmt"
    "io/ioutil"
    "crypto/tls"
    "crypto/x509"
    _ "github.com/influxdata/influxdb1-client" // this is important because of the bug in go mod
    client "github.com/influxdata/influxdb1-client/v2"
)
func main(){
    pool := x509.newcertpool()
    cacertpath := "/data/ca/agent/ca.crt"
    cacrt, err := ioutil.readfile(cacertpath)
    if err != nil {
        fmt.println("readfile err:", err)
        return
    }
    pool.appendcertsfrompem(cacrt) // 此处是将ca.crt证书内嵌到程序中,也可以使用sudo cp {client}/ca.crt /etc/ssl/certs命令将证书添加到本机上。
    c, err := client.newhttpclient(client.httpconfig{
        addr: "https://ip:port",
        username: "******",
        password: "******",
        tlsconfig: &tls.config{
            rootcas: pool,
            insecureskipverify: false,  // false表示需要校验服务端的证书。
        },
    })
    if err != nil {
        fmt.println("error creating influxdb client: ", err.error())
    }
    q := client.newquery("select * from cpu","database","ns")
    if response, err := c.query(q); err == nil && response.error() == nil {
        fmt.println("the result is: ",response.results)
    }
}
分享:
网站地图