grafana 连接 influxdb 1.x 和 2.x


grafana 连接 influxdb 1.x 和 2.x

influxdb 中文文档 https://jasper-zhang1.gitbooks.io/influxdb/content/,该文档还是 1.x 版本
influxdb 官方文档 https://docs.influxdata.com/influxdb/v2.0/,可以选择版本

influxdb 的概念基础语法可以查看官方文档,下面讲讲安装使用方法,1.x 版本使用 influxQL 查询语言,2.x 和 1.8+(beta) 使用 flux 查询语法
在这里插入图片描述

一、安装 influxdb

参考官方文档 https://docs.influxdata.com/influxdb/v2.0/install/?t=Docker,在右上方选择文档版本,然后选择指定的系统,按照指定命令或者下载安装包安装,下面讲讲 docker 安装方法
在这里插入图片描述
influx 2.x 版本安装成功自带 UI 界面,可访问 http://127.0.0.1:8086 查看配置

Ⅰ、docker 安装

选取拉取的镜像版本,可在 https://hub.docker.com/_/influxdb 中选择指定版本,不指定版本默认安装最新的

docker pull influxdb

创建并启动容器,将容器/var/lib/influxdb2 内部的数据持久化到主机 /var/docker/influxdb2.0 目录。

docker run -d \
    --name influxdb \
    -p 8086:8086 \
    --volume /var/docker/influxdb2.0:/var/lib/influxdb2 \
    influxdb:2.0.9

使用 docker ps -a 查看是否已经启动,如果未启动使用 docker logs -f influxdb 查看错误日志
进入influxdb 容器使用 docker exec -it influxdb /bin/bash 查看

二、常用操作
Ⅰ、influxdb 1.x版本添加用户认证

1、添加一个管理员用户,all privileges 拥有所有权限就是管理员用户

create user admin with password '..ye123456' with all privileges

2、修改 influxdb.conf 文件,开启用户认证 auth-enabled = true
在这里插入图片描述
3、启动运行
重新启动 influx 服务,重新运行 influxd.exe,Linux可以使用 systemctl restart influxd 或 service restart influxd

注意:网上说的是直接运行 influxd.exe 就可以,但我没有成功,我在启动服务时指定了配置文件

# influxdb.conf 为你配置文件的路径
influxd -config influxdb.conf

4、测试
未认证
在这里插入图片描述
认证
在这里插入图片描述

Ⅱ、influxdb 2.x 使用命令行

命令如下
在这里插入图片描述
官方文档地址 https://docs.influxdata.com/influxdb/v2.0/reference/cli/influx/

Ⅲ、CLI 配置token

influx cli 配置token,执行语句时不用传递 token

influx config create --config-name <config-name> \
  --host-url http://localhost:8086 \
  --org <your-org> \
  --token <your-api-token> \
  --active

比如我的设置

 influx config create -n first -u http://1.117.165.107:8086 -o first_org -t tNJ7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxU2xJjhGqV2cw== -a

其中 token 以及 org 在你的 influx UI 界面查看 http://127.0.0.1:8086/
在这里插入图片描述

查看配置的 token

在这里插入图片描述
比如查看所有的

influx config ls

可以看到我激活的是 first 的配置
在这里插入图片描述
切换环境可以使用 influx config set -n second -a在这里插入图片描述

Ⅴ、CLI 查询测试

例如,查询 test 数据库 temperature 表,field 为西安的最近 5 分钟的数据

influx query 'from(bucket: "test")
  |> range(start: -5m,stop:now())
  |> filter(fn: (r) => r["_measurement"] == "temperature")
  |> filter(fn: (r) => r["_field"] == "西安")
  |> yield(name: "mean")'

查询结果
在这里插入图片描述
相比 influx 1.x 命令行变化很大,1.x 版本命令行类似常用的 mysql 命令行写法

三、grafana 安装使用

安装 grafana,上一篇讲了 window 从源码运行 grafana https://blog.csdn.net/qq_41538097/article/details/120956231,有需要的可以看看
window和Linux安装 grafana 比较简单,下载解压即可,可以参考 grafana 官方文档https://grafana.com/docs/grafana/v8.1/installation/

Ⅱ、docker 安装 grafana

去dockerhub 查看需要的版本https://hub.docker.com/r/grafana/grafana
使用如下命令拉去镜像

docker pull grafana/grafana

创建启动容器

docker run -d -p 3000:3000  --name=grafana grafana/grafana

进入容器内部使用命令

docker exec -it -u root grafana /bin/sh

启动成功使用 http://127.0.0.1:3000 访问

如果需要修改 grafana 默认端口号,使用上面命令进入容器,进入 /usr/share/grafana/conf 目录,使用 cp default.ini grafana.ini 复制一份配置文件,grafana 官方不建议直接修改 default.ini 文件,具体修改方法可以参考我上一篇博客。

四、grafana 连接 influx
Ⅰ、influx 1.x
1、添加数据源

grafana 连接 influx 1.x ,点击设置里面的 datasources ,名字自己制定,查询语言需要选择 influxQL,设置链接地址 URL
在这里插入图片描述
设置连接数据库、用户名以及密码,点击保存并测试,如下表示配置成功
在这里插入图片描述

2、添加数据

需要数据的可以执行如下代码,需要使用 npm install influx 安装包

const Influx = require('influx'); //导包
const influxdbClient = new Influx.InfluxDB({
    database: 'my_data',
    username: 'root',
    password: '123456',
    hosts: [{host: 'localhost'}],
    schema: [
        {
            measurement: 'cpu', //类似于数据表的概念
            fields: { //数据表的字段,定义类型,FLOAT/INTEGER/STRING/BOOLEAN
                enabled: Influx.FieldType.BOOLEAN,
                host: Influx.FieldType.STRING,
                temperature: Influx.FieldType.FLOAT
            }, // tag 也是里面的字段,是自带索引光环。查询速度杠杠的。
            tags: ['model', 'system']
        }
    ]
});

// 插入数据
function insert(field1, field2, field3, tag1, tag2) {
    influxdbClient.writePoints([
        {
            measurement: 'cpu',
            fields: {
                enabled: field1,
                host: field2,
                temperature: field3
            },
            tags: {
                model: tag1,
                system: tag2
            }
        }
    ])
}

let j = 0;
setInterval(() => {
    for (let i = 0; i < 5; i++) {
        let field1, field2, field3, tag1, tag2;
        let arg1 = Math.round((Math.random() * 100).valueOf());
        let arg2 = Math.round((Math.random() * 100).valueOf());
        let arg3 = Math.round((Math.random() * 100).valueOf());
        let arg4 = (Math.random() * 100).toFixed(2);

        field1 = arg1 % 2 === 0 ? true : false;
        field2 = '192.' + arg1 + '.' + arg2 + '.' + arg3;
        field3 = arg4;
        // 模拟告警(测试告警数据需要)
        if (i === 2) {
            if (j % 5 !== 0) {
                field3 = (Math.random() * 20 + 80).toFixed(2);
            }
            j++;
        }
        switch (i) {
            case 0:tag1 = 'window';tag2 = 'notebook';break;
            case 1:tag1 = 'window';tag2 = 'desktop';break;
            case 2:tag1 = 'linux';tag2 = 'notebook';break;
            case 3:tag1 = 'linux';tag2 = 'desktop';break;
            case 4: tag1 = 'mac';tag2 = 'notebook';break;
        }
        console.log(field1, field2, field3, tag1, tag2);
        insert(field1, field2, field3, tag1, tag2);
    }
}, 1000 * 30);

插入数据如下所示
在这里插入图片描述

3、grafana 测试连接
  • 新建仪表盘
  • 选择刚才新建的数据源
  • 添加查询语句 SELECT "temperature" FROM "cpu" WHERE $timeFilter GROUP BY "model", "system"
    在这里插入图片描述
Ⅱ、influx 2.x
1、添加数据源
  • 2.x 和 1.x 差别还是挺大的,查询语言使用 flux,相关语法可参考 https://docs.influxdata.com/flux/v0.x/
    在这里插入图片描述
  • 连接不在使用用户名密码连接,而是使用 token
    在这里插入图片描述
    Organization,选择创建组织
    在这里插入图片描述
    Token
    在这里插入图片描述
    Default Bucket,默认桶,即数据库
    在这里插入图片描述
2、添加数据

如果需要添加数据的可以在 cli ui 界面选择客户端或其他数据源,选择自己熟悉的语言,复制其中的代码即可
在这里插入图片描述

3、grafana测试连接
  • grafana 新建仪表盘
  • 选定 influx2.x 数据源
  • 添加 flux 查询语句
from(bucket: "test")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "temperature")
  |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
  |> yield(name: "mean")

结果如下
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值