场景:需要展示源站的请求量和404状态的top数据,在没有elk的情况下,经过调研最终采用Grafana+influxdb来实现
部署过程
1. 安装grafana
这个单独写一个文章,这里就省略步骤了
2. 安装influxdb
# wget https://repos.influxdata.com/centos/6/x86_64/stable/influxdb-1.7.4.x86_64.rpm
# rpm -ivh influxdb-1.7.4.x86_64.rpm
# vim /etc/influxdb/influxdb.conf
修改监听端口
bind-address = "0.0.0.0:8087"
启动服务
# service influxdb start
新版本已经没有web界面,所以度娘的一下需要使用Chronograf来使用,所以感兴趣的朋友可以去尝试,我这里使用grafana展示数据
3. 创建数据库
输入influx进入数据库
# influx
Connected to http://localhost:8086 version 1.7.4
InfluxDB shell version: 1.7.4
Enter an InfluxQL query
>
创建数据库
> create database testdb
显示数据库
> show databases
name: databases
name
----
_internal
testdb
因为没有建表语句,直接插入数据即可,先选择数据库,插入数据,格式为:
insert measurements,tag,tag field
measurements:static_rate_of_flow 相当于mysql的表名
tag:采用key=value的格式,比如host=host_01中,tag名称是host,值是host_01,tag是带索引的,一条记录可以有多个tag,使用“,”号分割
field:value=10 field是必须存在的,也是使用key=value格式,在tag后面使用一个空格分割,这里用于记录/index请求的次数,一般每分钟一次插入一次数据
> use testdb
Using database testdb
> insert static_rate_of_flow,host=host_01,uri=/index value=10
> select * from static_rate_of_flow
name: static_rate_of_flow
time host uri value
---- ---- --- -----
1553074402876164558 host_01 /index 10
4. grafana添加influxdb源
点击Add data source
Name:自定义名字
Type:选择influxdb
URL:填写接口地址,http接口的默认端口是8086
Database:选择数据库
点击Save & Test测试数据源
5. 展示数据
添加一个graph类型,这里使用饼图
选择influxdb的数据源
插入一条查询语句,为了展示单位时间的top排行,当前的方法是:
(1)使用python每分钟将上一分钟的页面请求top5数据上报influxdb
(2)influxdb使用连续查询策略(cq),每五分钟收集上一小时的数据量,所以图形里面的数据每五分钟会更新一次
(3)在查询cq库的时候,是不支持top函数的,会把连续查询的数据全部展示出来,所以这里看到的记录数是大于5的
(4)通过此图可以看到每小时累计的请求量最大的uri,当需要查问题的时候可以通过监控图知道那些文件请求量大
(5)可以通过此方法展示ip请求量、下载的数据量、请求状态等等多种数据
6. 补充
刚才提到的连续查询,我也是简单使用,具体的方法会单独写一篇文章分享。