一起来玩了下 InfluxDb 吧

简介: 之前有一个需求,运营需要能看到某某功能长连接在线人数是多少,比如发完 push 之后是多少,能够实时得到运营手段的反馈。 我比较懒,能用简单的办法搞定,就不喜欢习惯用开源的东西,因为觉得自己学习的也比较慢,但是不得不说这种快速上手一个陌生产品的能力很重要,我很缺乏这种能力。 我们提供一个长连接服

之前有一个需求,运营需要能看到某某功能长连接在线人数是多少,比如发完 push 之后是多少,能够实时得到运营的反馈。

我比较懒,能用简单的办法搞定,就不喜欢习惯用开源的东西,因为觉得自己学习的也比较慢,但是不得不说这种快速上手一个陌生产品的能力很重要,我很缺乏这种能力。

我们提供一个长连接服务,占用端口8080,我最初的方式通过 shell 脚本做一个简单的监控,数据都直接写在了日志文件里。

  1. while :; do sleep 1;netstat -lanp|grep 8080|grep ESTABLISHED|awk '{print $5}'|awk -F ':' '{print $1}'|sort|uniq|wc -l|awk 'BEGIN{a="'$(date +%H:%M:%S)'";}{printf "%s,%d\n",a,$1}' >> access_num.log;done

上面的命令输出两列,第一列是时间,第二列是在线人数。

然后以时间作为横坐标,在线人数作为纵坐标,绘制了下面的图表(前端用的百度的echarts)。

比较简陋,不过用起来我觉得还是蛮轻便的。

搭同事的车一起玩了下influxdb

同事说,你这个太 low 了,现在比较流行Grafana+telegraf+InfluxDb来搭建。

Grafana 负责 UI 界面的展示

telegraf 做数据的收集,比如服务器集群的性能监控

InfluxDb 是现在流行的时间序列数据库

我马上搜这些关键字,全是英文呢,可视化效果真不错,github star 也上千。怎么安装了就不说了,直接上官网就有。InfluxDb数据库的定义比较新颖,下面就说说它了。

InfluxDb数据库里series对应的是我们常规认识的表,而表里面的一行数据一般都来表示一个对象,而series里面一行数据则是描述的一个point。(没错,就是坐标系里的一个真实的点,所以这个数据库的业务场景就是专门针对这种时间线的数据监控而创作的。)

那么这个点有哪些属性来描述它呢?

timestamp,point的时间戳,

measurement,可以理解为表名,

field,以1~n个key-value来表示,point的值,

tags,以0~n个key-value来表示,point 的属性。

以一个具体的例子来说,现在需要监控1服务器的负载,那么负载(load)就是measurement,此刻的负载值,就是field,该服务器的 ip 就可以作为tags中的一个,也可以不记 ip,因为此时我们的需求只是记录一台服务器而已。

那么命令行如何插入一条数据呢?下面是其写入协议。适用于InfluxDb的命令行和 Api 接口

  1. <measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]

以你老司机多年的经验,一看上面的表达式便知,[]里面的内容表示可选,所以插入数据库的时候,可以不用带时间戳,默认为当前时间戳。

官方的例子送给大家

  1. cpu,host=serverA,region=us_west value=0.64
  2. payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230
  3. stock,symbol=AAPL bid=127.46,ask=127.48
  4. temperature,machine=unit42,type=assembly external=25,internal=37 1434067467000000000

nice,看到了么,还可以用在交易记录哟。

说了这么多,下面加快速度一条路,快上车,带你迅速解决战斗。

假设 InfluxDb 

bin 文件路径是:/usr/local/bin/influx

绑定的 ip:101.241.254.176 

授权账号:mengkang

密码:123456

  1. # 进入命令行
  2. /usr/local/bin/influx -host 101.241.254.176 -username mengkang -password 123456
  3.  
  4. # 创建数据库
  5. CREATE DATABASE mydb
  6.  
  7. # 进入 mydb
  8. USE mydb
  9.  
  10. # 插入一条 101.241.254.134 服务器 websocket 在线人数的数据,不需要创建表,直接插入
  11. insert websocket,ip=101.241.254.134 num=100

那么数据怎么查询呢?这才是它的强大之处,不然就是数据库了。

比如官方的这个例子

  1. SELECT MEAN("water_level") FROM "h2o_feet" WHERE time > now() - 2w GROUP BY "location",time(6h)

查询过去两周各个地方的每6小时的水平平均值变化情况,是不是功能很强大呢?

支持的查询语句 https://docs.influxdata.com/influxdb/v1.0/query_language/data_exploration/

在使用telegraf,感觉配置文件太复杂啦,我同事在用,我太笨了研究了半天玩不转。

InfluxDb提供了 api 接口,我就直接通过shellInfluxDb写数据了。

  1. curl -i -XPOST -u username:password "http://101.241.254.176:8086/write?db=my_monitor" --data-binary 'websocket,host=10.24.254.134 value=120'

这样就能进入数据库了。

目录
相关文章
|
7月前
|
存储 缓存 固态存储
时序数据库 InfluxDB(四)
时序数据库 InfluxDB(四)
116 1
|
12天前
|
网络协议 API 数据库
InfluxDB集群
InfluxDB集群
32 0
|
Prometheus 监控 Cloud Native
Prometheus VS InfluxDB
前言 除了传统的监控系统如 Nagios,Zabbix,Sensu 以外,基于时间序列数据库的监控系统随着微服务的兴起越来越受欢迎,比如 Prometheus,比如 InfluxDB。gtt 也尝试了一下这两个系统,希望能找到两者的差别,为以后选型提供一些帮助。
8543 0
|
12天前
|
存储 监控 物联网
InfluxDB简介与场景
InfluxDB简介与场景
16 1
|
27天前
|
存储 监控 Java
InfluxDB时序数据库安装和使用
InfluxDB时序数据库安装和使用
46 2
|
7月前
|
存储 消息中间件 容灾
时序数据库 InfluxDB(七)
时序数据库 InfluxDB(七)
123 0
|
7月前
|
存储 监控 Unix
时序数据库 InfluxDB(六)
时序数据库 InfluxDB(六)
73 0
|
7月前
|
SQL 存储 NoSQL
时序数据库 InfluxDB(一)
时序数据库 InfluxDB(一)
185 0
|
7月前
|
存储 监控 Go
时序数据库 InfluxDB(五)
时序数据库 InfluxDB(五)
108 1
|
7月前
|
存储 文件存储 数据库
时序数据库 InfluxDB(二)
时序数据库 InfluxDB(二)
101 0

热门文章

最新文章