您的位置:首页 > 其它

Influxdb relay ubuntu

2017-02-06 15:33 113 查看
文件版本:
V1.0文件编号:
R&D0031
发布日期:
编 制:
审 批:
Influxdb relay + grafana服务器 目录1.简介3
1.1 特点4
1.2 influxdb比较4
1.3 用途4
2.系统部署基础4
2.1 安装4
2.2 启动5
2.3 web界面展示5
2.3.1 无验证web登录5
2.3.2 验证web登录6
2.4 带密码登录终端7
2.5 数据库常规操作8
2.5.1 数据库增8
2.5.2 数据库删除与修改8
2.5.3 数据库查询8
2.5.4 数据库增与表操作9
2.5.5 数据库保存策略(Retention Policies)10
2.5.6 数据库连续查询10
2.5.7 数据库用户管理10
3. 数据展示工具11
3.1 grafana介绍11
3.1 grafana安装,运行,启动11
3.2 grafana访问11
3.3创建Dashbord13
4. IfluxDB Relay13
4.1 简介13
4.2 拓扑介绍13
4.3 源码包安装测试14
4.4 influxdb-relay启动15
4.5 influxdb-relay数据写入同步16
4.6 influxdb-relay节点故障数据写入同步17
5. FAQ18

修订记录
版本号发布日期拟制人修订描述
V1.0
2017-01-17首次发布
V1.1
2017-02-14新增账号和密码
influxdb服务器

1.简介

InfluxDB用Go语言编写的一个开源分布式时序、事件和指标数据库,和传统是数据库相比有不少不同的地方。类似的数据库有Elasticsearch、Graphite等。

1.1 特点

1.提供了Http接口的API来操作数据2.提供了类似sql的数据库语句3.基于时间序列,支持与时间有关的相关函数(如最大,最小,求和等)4.可度量性:你可以实时对大量数据进行计算5.基于事件:它支持任意的事件数据6.无结构(无模式):可以是任意数量的列7.可拓展的支持min, max, sum, count, mean, median 等一系列函数,方便统计8.原生的HTTP支持,内置HTTP API9.强大的类SQL语法10.自带管理界面,方便使用

1.2 influxdb比较

库、表等比较:
influxDB传统数据库中的概念
database数据库
measurement数据库中的表
points表里面的一行数据
influxdb数据的构成:
Point由时间戳(time)、数据(field)、标签(tags)组成。
Point属性传统数据库中的概念
time每个数据记录时间,是数据库中的主索引(会自动生成)
fields各种记录值(没有索引的属性)也就是记录的值:温度, 湿度
tags各种有索引的属性:地区,海拔
这里不得不提另一个名词:series:
所有在数据库中的数据,都需要通过图表来展示,而这个series表示这个表里面的数据,可以在图表上画成几条线:通过tags排列组合算出来。具体可以通过SHOW SERIES FROM "表名" 进行查询。

1.3 用途

一般用来储存实时数据,配合一套UI界面来展示信息。

2.系统部署基础

2.1 安装

基本环境,准备。
root@ubuntu:~# lsgrafana_4.1.1-1484211277_amd64.deb influxdb_1.1.1_amd64.debroot@ubuntu:~# cat /etc/issueUbuntu 14.04.5 LTS \n \l root@ubuntu:~# uname -aLinux ubuntu 3.16.0-30-generic #40~14.04.1-Ubuntu SMP Thu Jan 15 17:43:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 开始安装root@ubuntu:~# dpkg -i influxdb_1.1.1_amd64.deb Selecting previously unselected package influxdb.(Reading database ... 90134 files and directories currently installed.)Preparing to unpack influxdb_1.1.1_amd64.deb ...Unpacking influxdb (1.1.1-1) ...Setting up influxdb (1.1.1-1) ... Adding system startup for /etc/init.d/influxdb ... /etc/rc0.d/K20influxdb -> ../init.d/influxdb /etc/rc1.d/K20influxdb -> ../init.d/influxdb /etc/rc6.d/K20influxdb -> ../init.d/influxdb /etc/rc2.d/S20influxdb -> ../init.d/influxdb /etc/rc3.d/S20influxdb -> ../init.d/influxdb /etc/rc4.d/S20influxdb -> ../init.d/influxdb /etc/rc5.d/S20influxdb -> ../init.d/influxdbProcessing triggers for man-db (2.6.7.1-1ubuntu1) ...

2.2 启动

root@ubuntu:~# /etc/init.d/influxdb startStarting the process influxdb [ OK ]influxdb process was started [ OK ]root@ubuntu:~# netstat -lnp|grep influtcp6 0 0 :::8083 :::* LISTEN 5057/influxd tcp6 0 0 :::8086 :::* LISTEN 5057/influxd tcp6 0 0 :::8088 :::* LISTEN 5057/influxd 8083 web管理端 http://ip:8083 用户名和密码都是admin, InfluxDB 的 Web 管理界面端口是 8083
8086 HTTP API 监听端口是 8086
8088 集群端口(目前还不是很清楚, 配置在全局的bind-address,默认不配置就是开启的)
启动成功之后,我们就可以开始使用influxdb啦!

2.3 web界面展示

2.3.1 无验证web登录

root@ubuntu:~# which influx/usr/bin/influxroot@ubuntu:~# influxVisit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.Connected to http://localhost:8086 version 0.13.0InfluxDB shell version: 0.13.0> > show databasesname: databasesname----_internal > CREATE DATABASE "testDB" #创建数据库> show databases #创建数据库name: databasesname----_internaltestDB> use testDB #使用testDB数据库类mysqlUsing database testDBWeb界面访问http://ip:8083,
注意:新版本默认是关闭该web展示,详见后面FAQ具体解决方法:








通过界面操作命令。



2.3.2 验证web登录

1. 先添加用户
设置TS的authorized,提高安全性,针对指定用户拥有权限才能访问数据库的数据,TS默认用户分为普通用户和管理员用户,权限分为read,write,all privileges三种权限
root@ubuntu:/home/leco# influxVisit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.Connected to http://localhost:8086 version 1.1.1InfluxDB shell version: 1.1.1> CREATE USER "influxdb" WITH PASSWORD 'influxdb' WITH ALL PRIVILEGES先添加账号和密码,均为influxdb

Web界面数据库的切换。此时登录web的时候需要输入账号和密码,验证通过后才可以正常进入。配置如下:



2. 重启influxdb
root@ubuntu:~# /etc/init.d/influxdb restartStopping influxdb...influxdb process was stopped [ OK ]Starting influxdb...influxdb process was started [ OK ]


通过界面上输入正确的IP,端口,用户名和密码点击save进入。

2.4 带密码登录终端

若是设置了密码验证的话必须就要输入账号和密码才能正常登录操作,否则报错如下
1. 错误登录
root@ubuntu:/home/leco# influxVisit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.Connected to http://localhost:8086 version 1.1.1InfluxDB shell version: 1.1.1> show databases;ERR: unable to parse authentication credentials #说明已经添加了验证方式Warning: It is possible this error is due to not setting a database.Please set a database with the command "use <database>".> quit
2. 正确登录
root@ubuntu:/home/leco# influx -host 'localhost' -port '8086' -username 'influxdb' -password 'influxdb' Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.Connected to http://localhost:8086 version 1.1.1InfluxDB shell version: 1.1.1> show databases;name: databasesname----_internalcmz#此时localhost是连接本机,若是远程连接就换成对应的IP。Port是influxdb默认端口8086,username 和password就是授权的账号和密码。

2.5 数据库常规操作

2.5.1 数据库增

> use testDBUsing database testDB> insert weather,altitude=1000,area=北 temperature=11,humidity=-4或者通过HTTP接口增加
curl -i -XPOST 'http://localhost:8086/write?db=testDB' --data-binary 'weather,altitude=1000,area=北 temperature=11,humidity=-4'Line Protocol格式
插入数据的格式似乎比较奇怪,这是因为influxDB储存数据所采用的是Line Protocol格式。
在上面两个插入数据的方法中,都有一样的部分。
weather,altitude=1000,area=北 temperature=11,humidity=-4
其中:
1. weather : 表名
2. altitude=1000,area=北 : tag
3. temperature=11,humidity=-4 :field
参考官方文档: https://docs.influxdata.com/influxdb/v0.10/write_protocols/line/

2.5.2 数据库删除与修改

2.5.3 数据库查询

> use testDBUsing database testDB> SELECT * FROM weather ORDER BY time name: weathertimealtitudeareahumiditytemperature-----------------------------------14850746132673340411000北-411
通过Http接口
curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "db=testDB" --data-urlencode "q=SELECT * FROM weather ORDER BY time DESC LIMIT 3"InfluxDB是支持类SQL语句的,具体的查询语法都差不多,就不再详细描述了。详见官方文档

2.5.4 数据库增与表操作

#创建数据库,库名为db_name> CREATE DATABASE "db_name" #显示所有数据库> SHOW DATABASESname: databasesname----_internaltestDBdb_name #删除库名字为db_name的库> DROP DATABASE "db_name" #切换到testDB数据库> USE testDBUsing database testDB #显示该数据库中的表> SHOW MEASUREMENTSname: measurementsname----weather #创建表#直接在插入数据的时候指定表名字(weather就是表名)> insert weather,altitude=1000,area=北 temperature=11,humidity=-4 #删除weather表> DROP MEASUREMENT "weather"

2.5.5 数据库保存策略(Retention Policies)

InfluxDB没有提供直接删除Points的方法,但是它提供了Retention Policies。主要用于指定数据的保留时间:当数据超过了指定的时间之后,就会被删除。
#1.查看当前数据库的Retention Policies> SHOW RETENTION POLICIES ON "testDB"namedurationshardGroupDurationreplicaNdefault---------------------------------------------autogen0s168h0m0s1true
#2.创建新的Retention Policies> CREATE RETENTION POLICY "rp_name" ON "testDB" DURATION 30d REPLICATION 1 DEFAULT说明:
1. rp_name:策略名
2. testDB:具体的数据库名
3. 30d:保存30天,30天之前的数据将被删除
它具有各种时间参数,比如:h(小时),w(星期)
4. REPLICATION 1:副本个数,这里填1就可以了
5. DEFAULT 设为默认的策略
#2.修改Retention Policies> ALTER RETENTION POLICY "rp_name" ON "testDB" DURATION 3w DEFAULT #3.删除Retention Policies> DROP RETENTION POLICY "rp_name" ON "testDB"

2.5.6 数据库连续查询

当数据超过保存策略里指定的时间之后,就会被删除。如果我们不想完全删除掉,比如做一个数据统计采样:把原先每秒的数据,存为每小时的数据,让数据占用的空间大大减少(以降低精度为代价)。这就需要InfluxDB提供的:连续查询(Continuous Queries)。#1.当前数据库的continus Queries> SHOW CONTINUOUS QUERIESname: _internalnamequery---------name: testDBnamequery---------#2.创建新的continus Queries

2.5.7 数据库用户管理

#显示用户> SHOW USERSuseradmin--------- #创建用户> CREATE USER "realcloud" WITH PASSWORD '123456' #创建管理员权限的用户> CREATE USER "cmz" WITH PASSWORD 'cmz' WITH ALL PRIVILEGES #删除用户> DROP USER "cmz"

3.数据展示工具

3.1 grafana介绍

数据最终是需要一套UI来展示的,而这种实时数据的展示,已经有不少项目了。 比如:1. 官方的Chronograf2. Grafana3. 其它...

3.1 grafana安装,运行,启动

此时我选择的使用Grafanaroot@ubuntu:~# lsgrafana_4.1.1-1484211277_amd64.deb influxdb_1.1.1_amd64.deb#安装root@ubuntu:~# dpkg -i grafana_4.1.1-1484211277_amd64.deb Selecting previously unselected package grafana.(Reading database ... 61968 files and directories currently installed.)Preparing to unpack grafana_4.1.1-1484211277_amd64.deb ...Unpacking grafana (4.1.1-1484211277) ...Setting up grafana (4.1.1-1484211277) ...Adding system user `grafana' (UID 106) ...Adding new user `grafana' (UID 106) with group `grafana' ...Not creating home directory `/usr/share/grafana'.### NOT starting grafana-server by default on bootup, please execute sudo update-rc.d grafana-server defaults 95 10### In order to start grafana-server, execute sudo service grafana-server startProcessing triggers for ureadahead (0.100.0-16) ...ureadahead will be reprofiled on next reboot#启动root@ubuntu:~# /etc/init.d/grafana-server start * Starting Grafana Server [ OK ]安装步骤参考:http://grafana.org/download/

3.2 grafana访问

1) Web登录,直接访问:http://your_ip:3000默认帐号:admin
默认密码:admin
2) 在Data Sources中添加数据库testDB




















其中user和password,如果没有设置过,可以随便填下。
保存之后,可以通过Test Connection来测试,是否填写正确。

3.3创建Dashbord

点击New按钮就可以了。

4.IfluxDB Relay

4.1 简介

该项目为influxdb添加了一个基本的高可用性层。通过正确的体系结构和灾难恢复过程,实现了高度可用的设置。
提示: influxdb-relay must be built with Go 1.5+
参考链接:
https://github.com/influxdata/influxdb-relay/blob/master/README.md

4.2 拓扑介绍

体系结构相当简单,包括负载平衡器、两个或多个influxdb中继进程和两个或多个influxdb进程。负载平衡器应使用路径/写入将UDP通信和http post请求指向两个继电器,同时将路径/查询指向两个influxdb服务器。安装程序应该如下:



给我的感觉,这个 influxdb-relay是一个数据库中间件的角色,起到了一个代理的作用

4.3 源码包安装测试

1.实验环境
IP
系统环境
安装软件
192.168.5.200
Ubuntu14.04 x64
influxdb
influxdb-relay
192.168.5.202
Ubuntu14.04 x64
influxdb
此时上文只在200机器上安装了influxdb,此时要在202上也要安装influxdb。也可以只安装在一个机器上,我分开安装了,更贴切实际生产情况。
2. 安装golang环境
influxdb release的deb包本身是已经编译好的,并不需要golang的环境。而influxdb-relay目前还只是存放在github上,因此需要先安装golang环境。 手动下载更高版本的golang是需要的。

3. 下载并解压1.6.2版本的golang压缩包
root@ubuntu:~# apt-get install gitroot@ubuntu:~# wget http://www.golangtc.com/static/go/1.6.2/go1.6.2.linux-amd64.tar.gzroot@ubuntu:~# ls go1.6.2.linux-amd64.tar.gz go1.6.2.linux-amd64.tar.gzroot@ubuntu:~# tar -zxf go1.6.2.linux-amd64.tar.gz -C /usr/local/
4. 配置环境变量
root@ubuntu:~# tail -9 /etc/profile#add by caimengzhi at 2017-01-23 for go. startexport GOROOT=/usr/local/go export GOBIN=$GOROOT/bin export GOPKG=$GOROOT/pkg/tool/linux_amd64 export GOARCH=amd64 export GOOS=linux export GOPATH=$HOMEexport PATH=$PATH:$GOBIN:$GOPKG:$GOPATH/bin #add by caimengzhi at 2017-01-23 for go. Endroot@ubuntu:~# source /etc/profileroot@ubuntu:~# go versiongo version go1.6.2 linux/amd64root@ubuntu:~# GOPATH=/root/goroot@ubuntu:~# go get github.com/influxdata/influxdb-relayroot@ubuntu:~# lsgo go1.6.2.linux-amd64.tar.gz grafana_4.1.1-1484211277_amd64.deb influxdb_1.1.1_amd64.deb src#此时会在/root下发现go文件 root@ubuntu:~# cp $GOPATH/src/github.com/influxdata/influxdb-relay/sample.toml ./relay.tomlroot@ubuntu:~# vim relay.toml-bash: /root/go/bin/influxdb-relay: No such file or directoryroot@ubuntu:~# which influxdb-relay/usr/local/go/bin/influxdb-relay
5. 配置文件解释
root@ubuntu:~# cat relay.toml `http`name = "example-http"bind-addr = "192.168.5.200:9096"output = [ { name="local1", location = "http://192.168.5.200:8086/write" }, { name="local2", location = "http://192.168.5.202:8086/write" },] `udp`name = "example-udp"bind-addr = "192.168.5.200:9096"read-buffer = 0 # defaultoutput = [ { name="local1", location="192.168.5.200:8089", mtu=512 }, { name="local2", location="192.168.5.202:8089", mtu=1024 },]

4.4 influxdb-relay启动

root@ubuntu:~# /usr/local/go/bin/influxdb-relay -config relay.toml >/tmp/influxdb_relay.log 2>/dev/null &[1] 10943
再指定之前influxdb-relay配置的端口9096,成功进入其他的influxdb
root@ubuntu:~# influx -port 9096Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.Connected to http://localhost:9096 version relayInfluxDB shell version: 1.1.1

4.5 influxdb-relay数据写入同步

验证可以通过influxdb-relay写数据
root@ubuntu:~#curl -i -XPOST 'http://localhost:9096/write?db=testDB' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000' 2017/01/23 17:53:43 Problem posting to relay "example-http" backend "local2": Post http://127.0.0.1:7086/write?db=testDB: dial tcp 127.0.0.1:7086: getsockopt: connection refusedHTTP/1.1 204 No ContentDate: Mon, 23 Jan 2017 09:53:43 GMT
1. 进入节点1,influxdb验证数据写入
root@ubuntu:~# influxVisit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.Connected to http://localhost:8086 version 1.1.1InfluxDB shell version: 1.1.1> use testDBUsing database testDB> select * from cpu_load_shortname: cpu_load_shorttimehostregionvalue-------------------1434055562000000000server01us-west0.64
2. 进入节点2,influxdb验证数据写入
> use testDB;Using database testDB> select * from cpu_load_shortname: cpu_load_shorttimehostregionvalue-------------------1434055562000000000server01us-west0.64从上可以看出通过调用relay的端口9096.写入数据,两个节点都会有相对数据写入。
注意点:### 缺陷,不知道是不是坑,反正在官网的github上没看到这个注意点
# 手动在所有节点上创建数据库
write操作并不包含创建数据库,所以需要手动在所有节点上提前创建数据库

4.6 influxdb-relay节点故障数据写入同步

# 故障节点操作
1.停止节点1的influxdb
root@loocha15:~# /etc/init.d/influxdb stop
Stopping influxdb...
influxdb process was stopped [ OK ]

2.此时继续写入数据
curl -i -XPOST 'http://localhost:9096/write?db=cmz' --data-binary 'cpu_load_short,host=beijing,region=east value=2 2222222222'2017/02/06 15:19:26 Problem posting to relay "example-http" backend "local1": Post http://192.168.3.35:8086/write?db=cmz: dial tcp 192.168.3.35:8086: getsockopt: connection refusedHTTP/1.1 204 No ContentDate: Mon, 06 Feb 2017 07:19:26 GMT
3.节点2 验证数据
> use cmz;Using database cmz> select * from cpu_load_shortname: cpu_load_shorttimehostregionvalue-------------------1111111111nanjingeast1232222222222beijingeast2 #这一条就是节点1故障后,写入的数据1434055562000000000server01us-west0.64到此截止influxdb的HA已经测试完毕。

5. FAQ

1. WEB显示404root@ubuntu:~# curl localhost:8086 -I
HTTP/1.1 404 Not Found
Content-Type: text/plain; charset=utf-8
X-Content-Type-Options: nosniff
X-Influxdb-Version: 1.1.1
Date: Sun, 22 Jan 2017 09:36:48 GMT
Content-Length: 19
Influxdb新版本web界面不展示解决方法
1.新安装influxdb web界面不展示



访问的时候404.

解决方法:
一、问题原因
InfluxDB在0.13版本以后,就默认关闭了web管理页面,而国内的文档大多都以旧版的InfluxDB为标准写的,所以下载安装好最新版本以后,就会出现8083端口的web管理页面访问不了的问题。二、解决方案
新版的InfluxDB虽然默认关闭了web管理页面,但我们可以通过很简单的方式进行开启。打开配置文件,vim /etc/influxdb/influxdb.conf 找到如下几行:


修改后如下:



重启服务
root@ubuntu:~# /etc/init.d/influxdb restart
influxdb process already stopped [ OK ]
Starting influxdb...
influxdb process was started [ OK ]
查看端口号8083(之前是没有的)
root@ubuntu:~# netstat -lnp|grep influ
tcp6 0 0 :::8083 :::* LISTEN 5057/influxd
tcp6 0 0 :::8086 :::* LISTEN 5057/influxd
tcp6 0 0 :::8088 :::* LISTEN 5057/influxd
Web界面访问展示: http://ip:8083


OK.

2. commandroot@ubuntu:~# go get -u github.com/influxdata/influxdb-relay
go: missing Git command. See https://golang.org/s/gogetcmd package github.com/influxdata/influxdb-relay: exec: "git": executable file not found in $PATH
解决:
root@ubuntu:~# apt-get install git

3.relay命令行管理不了root@ubuntu:~# !net
netstat -lnp|grep 9096
tcp 0 0 127.0.0.1:9096 0.0.0.0:* LISTEN 3502/influxdb-relay
udp 0 0 127.0.0.1:9096 0.0.0.0:* 3502/influxdb-relay
root@ubuntu:~# influx -port 9096
Visit https://enterprise.influxdata.com to register for updates, InfluxDB server management, and monitoring.
Connected to http://localhost:9096 version relay
InfluxDB shell version: 1.1.1
> show database;
ERR: invalid write endpoint
Warning: It is possible this error is due to not setting a database.
Please set a database with the command "use <database>".

6. 参考文章

http://dbspace.blog.51cto.com/6873717/1881705
http://grafana.org/features/
https://www.influxdata.com/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ubuntu relay influxdb