Django 项目中使用 influxdb 时序数据库实时监控CPU,网络等信息
InfluxDB 是 Go 语言开发的一个开源分布式时序数据库,非常适合存储指标、事件、分析等数据
collectd C 语言写的一个系统性能采集工具
1. 安装配置 collectd 以centos7为例
使用yum安装
- yum -y install epel-release
- yum -y install collectd
安装完成后找寻配置文件 collectd.conf
默认路径为 /etc/collectd.conf (debian 8 上是 /etc/collectd/collectd.conf)
修改以下内容以监测网卡和cpu信息为例
可以按照需求找寻需要的配置
https://collectd.org/documentation/manpages/collectd.conf.5.shtml#plugin_cpu
找到文件后 vi collectd.conf 找到以下内容,将注释解开。
*FQDNLookup true
*BaseDir “/var/lib/collectd”
*PIDFile “/var/run/collectd.pid”
*PluginDir “/usr/lib64/collectd”
*TypesDB “/usr/share/collectd/types.db”
*LoadPlugin syslog
*LoadPlugin interface
*LoadPlugin load
*LoadPlugin network
最关键的是 “network” plugin,这部分设定监控信息将要发送到 127.0.0.1 的 25826 端口。稍后我们将要指定 InfluxDB 监听此端口以接收 CollectD 的发包。
现在启动这个守护程序,并且将它加入到开机自启动中。
systemctl start collectd.service
systemctl enable collectd.service
2. 安装配置 InfluxDB
yum -y install http://influxdb.s3.amazonaws.com/influxdb-0.9.4.2-1.x86_64.rpm
编辑 InfluxDB 的配置文件 /etc/opt/infuxdb/influxdb.conf,将 [collectd] 标签下的内容修改为:
- [collectd]
- enabled = true
- bind-address = “127.0.0.1:25826” # 换成本机IP
- database = “collectd”
- typesdb = “/usr/share/collectd/types.db”
启动程序
systemctl start influxdb.service
接下来你可以验证是否成功写入数据库
输入 、/opt/influxdb/influx 进入数据库IED界面,当然你也可以设置环境变量,操作方法和查看mongo数据库一样
3. 安装Django 依赖库
pip install influxdb
pip install django_influxdb_metrics
django 项目中的 settings 文件中app注册中增加这一行
底部加入以下内容
在Django中加入测试代码,查看数据是否能正常获取
需要的 views.py 中导包
from influxdb_metrics.utils import query
def test():
data = [res for res in query(‘select * from cpu_value ORDER BY time DESC limit 1’)]
这样数据就成功拿到,并且时时更新数据库啦。亲测可以用,分享出来,不懂的地方留言!
最好的一点就是数据不需要去插入操作,直接调取数据就行,按照需求选择插入时间,和查询时间对指定进行监测。