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’)]
這樣資料就成功拿到,并且時時更新資料庫啦。親測可以用,分享出來,不懂的地方留言!
最好的一點就是資料不需要去插入操作,直接調取資料就行,按照需求選擇插入時間,和查詢時間對指定進行監測。