[转帖]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
- 1
创建并启动容器,将容器/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
- 1
- 2
- 3
- 4
- 5
使用 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
- 1
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
- 1
- 2
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
- 1
- 2
- 3
- 4
- 5
比如我的设置
influx config create -n first -u http://1.117.165.107:8086 -o first_org -t tNJ7xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxU2xJjhGqV2cw== -a
- 1
其中 token 以及 org 在你的 influx UI 界面查看 http://127.0.0.1:8086/

查看配置的 token

比如查看所有的
influx config ls
- 1
可以看到我激活的是 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")'
- 1
- 2
- 3
- 4
- 5
查询结果

相比 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
- 1
创建启动容器
docker run -d -p 3000:3000 --name=grafana grafana/grafana
- 1
进入容器内部使用命令
docker exec -it -u root grafana /bin/sh
- 1
启动成功使用 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 <span class="token operator">=</span> arg1 <span class="token operator">%</span> <span class="token number">2</span> <span class="token operator">===</span> <span class="token number">0</span> <span class="token operator">?</span> <span class="token boolean">true</span> <span class="token operator">:</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
field2 <span class="token operator">=</span> <span class="token string">'192.'</span> <span class="token operator">+</span> arg1 <span class="token operator">+</span> <span class="token string">'.'</span> <span class="token operator">+</span> arg2 <span class="token operator">+</span> <span class="token string">'.'</span> <span class="token operator">+</span> arg3<span class="token punctuation">;</span>
field3 <span class="token operator">=</span> arg4<span class="token punctuation">;</span>
<span class="token comment">// 模拟告警(测试告警数据需要)</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>i <span class="token operator">===</span> <span class="token number">2</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>j <span class="token operator">%</span> <span class="token number">5</span> <span class="token operator">!==</span> <span class="token number">0</span><span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
field3 <span class="token operator">=</span> <span class="token punctuation">(</span>Math<span class="token punctuation">.</span><span class="token function">random</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">*</span> <span class="token number">20</span> <span class="token operator">+</span> <span class="token number">80</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
j<span class="token operator">++</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">switch</span> <span class="token punctuation">(</span>i<span class="token punctuation">)</span> <span class="token punctuation">{<!-- --></span>
<span class="token keyword">case</span> <span class="token number">0</span><span class="token operator">:</span>tag1 <span class="token operator">=</span> <span class="token string">'window'</span><span class="token punctuation">;</span>tag2 <span class="token operator">=</span> <span class="token string">'notebook'</span><span class="token punctuation">;</span><span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token number">1</span><span class="token operator">:</span>tag1 <span class="token operator">=</span> <span class="token string">'window'</span><span class="token punctuation">;</span>tag2 <span class="token operator">=</span> <span class="token string">'desktop'</span><span class="token punctuation">;</span><span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token number">2</span><span class="token operator">:</span>tag1 <span class="token operator">=</span> <span class="token string">'linux'</span><span class="token punctuation">;</span>tag2 <span class="token operator">=</span> <span class="token string">'notebook'</span><span class="token punctuation">;</span><span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token number">3</span><span class="token operator">:</span>tag1 <span class="token operator">=</span> <span class="token string">'linux'</span><span class="token punctuation">;</span>tag2 <span class="token operator">=</span> <span class="token string">'desktop'</span><span class="token punctuation">;</span><span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token keyword">case</span> <span class="token number">4</span><span class="token operator">:</span> tag1 <span class="token operator">=</span> <span class="token string">'mac'</span><span class="token punctuation">;</span>tag2 <span class="token operator">=</span> <span class="token string">'notebook'</span><span class="token punctuation">;</span><span class="token keyword">break</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>field1<span class="token punctuation">,</span> field2<span class="token punctuation">,</span> field3<span class="token punctuation">,</span> tag1<span class="token punctuation">,</span> tag2<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token function">insert</span><span class="token punctuation">(</span>field1<span class="token punctuation">,</span> field2<span class="token punctuation">,</span> field3<span class="token punctuation">,</span> tag1<span class="token punctuation">,</span> tag2<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
}, 1000 * 30);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
插入数据如下所示

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")
- 1
- 2
- 3
- 4
- 5
结果如下

[转帖]grafana 连接 influxdb 1.x 和 2.x的更多相关文章
- 容器化系列 - 通过Grafana监测InfluxDB数据 on Docker
本文演示在Docker中运行Grafana和InfluxDB,并通过Grafana展示InfluxDB曲线图. 1 准备工作 1.1 安装Docker 请参考这里 1.2 下载镜像 $ docker ...
- Centos7 搭建Grafana+Jmeter+Influxdb 性能实时监控平台
未完,待更新 背景 日常工作中,经常会用到Jmeter去压测,毕竟LR还要钱(@¥&*...),而最常用的接口压力测试,我们都是通过聚合报告去查看压测结果的,然鹅聚合报告的真的是丑到家了,作为 ...
- 全网最详细!Centos7.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台
背景 日常工作中,经常会用到Jmeter去压测,毕竟LR还要钱(@¥&*...),而最常用的接口压力测试,我们都是通过聚合报告去查看压测结果的,然鹅聚合报告的真的是丑到家了,作为程序猿这当然不 ...
- 搭建grafana+telegraf+influxdb服务器性能监控平台
最近在学习性能测试,了解到一套系统资源使用率低的监控环境,也就是grafana+telegraf+influxdb. InfluxDB是一款优秀的时间序列数据库,适合存储设备性能.日志.物联网传感器等 ...
- Centos7.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台(不使用docker)
工具介绍 [centos7安装influxDB] Influxdata官网下载路径:https://portal.influxdata.com/downloads/ 1.直接执行以下命令安装 2.安装 ...
- Centos8.X 搭建Grafana+Jmeter+Influxdb 性能实时监控平台
前言 本篇文章引用了小菠萝测试笔记,大部分内容非原创,基于自身实操过程中,完善了部分. 本篇随笔是在Linux上搭建的,后面会补充在docker以及k8s上如何部署安装 工具介绍 工具 介绍 Jmet ...
- 部署grafana+telegraf+influxdb 及 配置 jmeter后端监听
搞性能测试,可以搭建Grafana+Telegraf+InfluxDB 监控平台,监控服务器资源使用率.jmeter性能测试结果等. telegraf: 是一个用 Go 编写的代理程序,可收集系统和服 ...
- [转帖] 基于telegraf, influxdb, grafana 建立 esxi 监控
[系统集成] 基于telegraf, influxdb, grafana 建立 esxi 监控 https://www.cnblogs.com/hahp/p/7677420.html 之前在 nagi ...
- Grafana和influxdb监控nginx日志中的请求响应时间图形化监控
监控效果如图: 监控方法: 通过logstash过滤nginx日志,然后解析出nginx日志中的request time字段 然后output到influxdb时序数据库中 通过grafana展示数据 ...
- Grafana+Telegraf+Influxdb监控Tomcat集群方案
前言 前一段时间自家养的几只猫经常出问题,由于没有有效的监控预警手段,以至于问题出现或者许久一段时间才会被通知到.凌晨一点这个锅可谁都不想背,为此基于目前的情况搭建了以下这么一套监控预警系统. 相关软 ...
随机推荐
- JavaScript 常见错误与异常处理
一.为什么要了解常见JS错误 1.调试和故障排除: 了解常见的JavaScript错误可以帮助你更好地调试和故障排除代码.当你遇到错误时,能够快速识别错误类型并找到解决方法,可以节省大量的时间和精力. ...
- 使用Java 17中的record替代Lombok的部分功能
在DD长期更新的Java新特性专栏中,已经介绍过Java 16中开始支持的新特性:record的使用. 之前只是做了介绍,但没有结合之前的编码习惯或规范来聊聊未来的应用变化.最近正好因为互相revie ...
- 17、Flutter StatelessWidget 、 StatefulWidget
在Flutter中自定义组件其实就是一个类,这个类需要继承StatelessWidget/StatefulWidget. StatelessWidget是无状态组件,状态不可变的widget Stat ...
- Spark SQL快速入门
Spark SQL快速入门 1.概述 spark SQL是Apache用于处理结构化数据的模块.其中包含SQL.DataFrame API.DataSet API,意味着开发人员可以在不同的API之间 ...
- 如何上传你的组件到npm
前言 以react为例子 webpack作为打包工具 准备工作 安装node npm上注册账号 https://www.npmjs.com/ 创建要上传组件 新建项目 生成package.json文件 ...
- 论文推荐|TDSC2022 安全补丁识别最新的方案E-SPI
摘要:TDSC 2022发表了安全补丁识别最新的方案"Enhancing Security Patch Identification by Capturing Structures in C ...
- 带你掌握java反序列化漏洞及其检测
摘要:在本文中将先介绍java反序列化漏洞的原理,然后在此基础上介绍安全工具如何检测.扫描此类漏洞. 本文分享自华为云社区<java反序列化漏洞及其检测>,作者: alpha1e0. 1 ...
- 为啥你写的代码老有大串的if/else?
摘要:控制语句,到底何错之有呢? 本文分享自华为云社区<业务代码如何才能不再写出大串的if/else?>,作者: JavaEdge . 控制结构?没错!你最爱的 if.for都是一类坏味道 ...
- IDEA画图神器 PlantUML
PlantUML 是一款开源的UML图绘制工具,支持通过文本来生成图形,使用起来非常高效.可以支持时序图.类图.对象图.活动图.思维导图等图形的绘制. 下面使用PlantUML来绘制一张流程图,可以实 ...
- Go--连接mysql,增删改查
下载驱动库,下为官方推荐的,还有其他ORM库,暂时没涉及,故本文不做阐述 go get -u github.com/go-sql-driver/mysql 一.连接 1.1 直接连接,查询单行 pac ...
