背景
团队在开发流媒体服务,需要实现一个监控在线人数的功能,可以看到历史有多少人在线,当前有多少人在线的功能。 如果用mysql等关系型数据库来实现,可以用事件记录日志,然后通过PHP加上一些绘图的插件来实现,但这种方式并不好,首先用关系型数据库随着时间累积,会存在数据量越来越大,导致查询缓慢,再者需要编写这部分统计代码,因此并不是最佳选择。
我们很快找到了一个“时序性数据库”(prometheus),这种数据库会以时间节点来记录我们要存储的数据,然后结合他的一些绘图功能,我们完全可以不用写绘图的逻辑,而且prometheus还提供数据收集的功能,我们只需要把需要统计的数据按照固定的格式传递就好了。而Grafana是一个专门绘图的,支持很多种数据源,比如mysql,prometheus,es等数据库,绘图功能特别强大,因此我们便使用了这两种软件的结合实现了一个监控功能。
实现过程
两个工具都是英文的,如果英文和我一样不怎么好,建议使用谷歌浏览器的网页翻译功能,可以节省很多时间
复制代码
操作步骤:
- 安装
- 数据收集
- 收集验证
- 绘图配置
- 完成
一、安装
1. Grafana
官方安装文档:grafana.com/grafana/dow…
mac下安装
brew install grafana
复制代码
docker安装
docker run -d --name=grafana -p 3000:3000 grafana/grafana
复制代码
2. prometheus
官方安装文档:prometheus.io/docs/promet…
配置文件
在安装之前我们先建立好配置文件,让安装后可以直接启动,配置文件的模板在官方文档中有,下面是我使用的配置文件,也可以直接使用,记得把配置文件的(#后面的内容删除)
---
global: #全局配置
scrape_interval: 5s #5秒钟收集一次数据
scrape_timeout: 3s #连接超时时间
scrape_configs: #子配置
- job_name: 'media' # 任务名称为media
scrape_interval: 3s # 3秒钟收集一次数据