InfluxDB 创建权限 细节+Grafana搭建和Grafana dashboard的配置

InfluxDB+Grafana搭建和Grafana dashboard的配置

2017年09月12日 00:41:02 阅读数:7874 标签: 时序数据库influxdbgrafana 更多

个人分类: 随笔

 

一、InfluxDB安装

在RedHat&CentOS下,使用下面命令直接安装并启动:

wget https://dl.influxdata.com/influxdb/releases/influxdb-1.2.4.x86_64.rpm
sudo yum localinstall influxdb-1.2.4.x86_64.rpm
sudo service influxdb start

默认的配置文件在 /etc/influxdb/influxdb.conf,可以通过下面的命令指定配置文件启动:

influxd -config /etc/influxdb/influxdb.conf

用默认的配置文件启动后,输入 influx 命令即可直接连接到本地的influxdb服务。

$ influx
Connected to http://localhost:8086 version 1.2.x
InfluxDB shell 1.2.x
>

InfluxDB使用的是一种SQL like的查询语言,叫做InfluxQL。与标准SQL的语法类似,但也有为InfluxDB定制的语法,比较容易上手。比如接下来先创建用户:

-- 创建一个管理员用户
CREATE USER "admin" WITH PASSWORD '111111' WITH ALL PRIVILEGES
-- 创建一个普通用户
CREATE USER "user" WITH PASSWORD '111111'
-- 为用户授权读权限
GRANT READ ON [database] to "user"
-- 为用户授权写权限
GRANT WRITE ON [database] to "user"

修改InfluxDB的配置文件,设置http下的auth-enabled = true,重启后,使用influx命令登录数据库就需要用户名和密码了。(Influx命令实际上也是使用API来操作InfluxDB的,InfluxDB只提供了API接口)

InfluxDB的配置还有很多,之后研究透后再慢慢调整。

$ influx -username admin -password ''
Connected to http://localhost:8086 version 1.2.x
InfluxDB shell 1.2.x
>

在-password后接空字符串回车后输入密码可以屏蔽掉密码显示,不要直接在-password后跟上密码。

接下来是一系列的创建操作

-- 创建数据库,默认设置
CREATE DATABASE "foo"
-- 创建数据库,同时创建一个Retention Policy,这个东西不知道怎么翻译,可以认为是一个DATABASE的属性描述
-- Retention Policy各部分描述:DURATION为数据存储时长,下面的1d即只存1天的数据;REPLICATION为数据副本,一般在使用集群的时候才会设置为>1;SHARD DURATION为分区间隔,InfluxDB默认对数据分区,下面的30m即对数据每隔30分钟做一个新的分区;Name是RP的名字。
CREATE DATABASE "bar" WITH DURATION 1d REPLICATION 1 SHARD DURATION 30m NAME "myrp"
 
-- 可以单独创建RP,加在已经创建的DB上
CREATE RETENTION POLICY "events" ON "somedb" DURATION 60m REPLICATION 2 SHARD DURATION 30m

当然InfluxDB还支持其他DDL,具体可猛击https://docs.influxdata.com/influxdb/v1.2/query_language/spec/#queries 查看Influx Reference。

由于InfluxDB的无结构(schemeless)特性,我们不需要预先建表,直接use [ database ]后就可以写入数据了。举个栗子。

INSERT cpu,host=serverA,region=us_west value=0.64
 
INSERT temperature,machine=unit42,type=assembly external=25,internal=37

上面语句中的cpu, temperature为InfluxDB某个database的measurement;host,region,machine,type为对应measurement下的tags;value,external,internal为对应measurement下的field,是measurement的实际值;而INSERT的一行数据称为一个point

measurement,tags,fields,points与普通的关系型数据库的对应:

  • measurement类似于SQL中的table;
  • tags类似SQL中的被索引的列;
  • fields类似于SQL中没有被索引的列;
  • points对应SQL的table中的每行数据。

更详细的介绍猛戳https://docs.influxdata.com/influxdb/v1.2/concepts/glossary/

然后读数据:

SELECT "host", "region", "value" FROM "cpu"
SELECT * FROM "temperature"
-- measurement都可以用正则表示,下面表示读一个db下的所有measurement的数据
SELECT * FROM /.*/ 
-- 配上where条件
SELECT "region", "value" FROM "cpu" where "host" = "server1"

在select中使用tags的字段来作为where中的条件最好,因为tags都是有索引的,而field是没有索引的。

select的列必须带有一个field,否则是查不出来的。

二、Grafana安装

直接使用yum安装

$ sudo yum install https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.3.1-1.x86_64.rpm

启动要指定homepath,配置文件要放在homepath的config目录下。默认的配置文件为default.ini,可以用-config指定自己的配置文件。

目前配置文件还没研究透,只修改了几个存储目录的路径,像data,logs之类的。

启动命令:

$ ./grafana-server -homepath <dir> -config <file>

三、Grafana配置

启动后,本地服务的默认端口为3000,在浏览器输入localhost:3000,输入用户名和密码admin/admin,即可登录。(管理员的用户名和密码在配置文件中可以配置的)

根据Getting Started with Grafana中的步骤,依次配置Grafana的数据源(这里就是InfluxDB),创建一个DashBoard以及添加用户。

1.配置数据源

配置数据源的界面如下所示:

配置从上往下:

  • Name即为该数据源的标识名称,type为数据类型,这里为InfluxDB。此外Grafana还支持多种数据源;
  • 在http settings类下,URL即InfluxDB的http server的URL,Access方式有proxy和direct。direct为在浏览器端直接连接数据源,不经过Grafana的后端。proxy即Grafana做连接的代理,前端要经过Grafana后端来连接数据源;
  • 下面是http认证的一些配置,这里没有用到所以暂时不介绍;
  • 最后是InfluxDB Details,需要填写的有数据源对应的database,以及使用的用户名和密码。这里有个小问题就是先前我配置一个只读权限的用户会报错,似乎只读用户不能使用Show命令,这里需要看一下,按理说这种用户的权限必须是只读的,如果有别的权限可能会有安全问题。

配置好以后Grafana会尝试连接,如果出错会在页面上报错,没问题的话就可以直接保存了。

2.建立一个dashboard

点击create your first dashboard,进入下面的界面:

默认Grafana支持这些图表,当然可以在Grafana的官网上下载更多的图表插件。我们选择最基本的折线图Graph。点开,点击panel title,点击edit打开配置框。

General设置看板的标题等属性,还可以配置下钻看板,即点击该看板可以跳到另一个看板中。最重要的设置是Metrics,上图可以看到,该设置是构造查询InfluxDB的查询语句的。A是这条查询的标识,如果要增加一条查询,标识就是B。这个貌似不能自定义,它的用途会在Alert设置下使用到。我们可以看到将要构造的查询结构,一眼就能看出来这是在构造一条SQL语句,熟悉SQL的人也很清楚每个字段的意义。FROM后面跟的是数据库的rentention policy和measurement,WHERE后面为条件,注意尽量使用tags的字段作为条件。下面的SELECT则是填写field或tags的key,并可以选择一系列聚合函数。GROUP BY为聚合字段,一般是按时间聚合,当然也可以按其他字段。按时间聚合可以指定时间粒度,比如time(1s),time(1d)等。下面的FORMAT AS为指定格式,ALIAS BY为指定别名。

配置好Metric后,InfluxDB中有数据的话就可以看到有折线出现了。右上角有刷新按钮,如果有新数据导入,点击刷新即可在图上显示最新的数据了。同时我们还可以设置自动刷新,已经图表展现的时间范围。

另一个重要的配置是报警Alert。点击Alert-create alert后会出现报警的配置,可以配置报警名称,触发条件,定时监测,状态触发等。报警支持邮件的报警,要接入钉钉可以使用webhook来实现。

3. 增加用户

回到home dashboard,点击add users。可以增加用户账号。添加需要填写用户名和邮箱,提交后会生成一个邀请链接,发给对应的用户后点击进入,然后用户自己填写密码后,就能登录了。

猜你喜欢

转载自blog.csdn.net/wangshuminjava/article/details/82291705