前言
influxDB官网:https://www.influxdata.com/
正如官网所介绍,influxDB是一个开源的时序型数据库。使用Go语言编写。主要用来查询和存储时序型数据。和Mysql和Nosql不同的是,influxDB被广泛用于存储系统的监控数据。并且可以配合一些图形化界面例如Grafana进行图形化展示。
与MYSQL的基础概念对比
概念 | MYSQL | influxDB |
---|---|---|
数据库 | database | database |
表 | table | measurement |
列 | column | tag |
下载安装influxDB
目前官网的influxDB版本是V2版本,我下载的是V1版本。版本号是1.7.11
mac版influxdb下载
下载好之后对文件进行解压
1 | tar zxvf influxdb-1.7.11_darwin_amd64.tar.gz |
解压之后进入文件夹/usr/bin
下启动
1 | ./influxd |
启动客户端
1 | ./influx |
influxDB操作和mysql相似。通过查询数据表发现里面只存在一个默认数据库_internal
gopsutil学习
gopsutil是一个查询系统性能数据的模块,通过go语言实现。通过安装gopsutil模块就可以实现对本机的一些参数进行查询。
小试牛刀
1 | go get github.com/shirou/gopsutil |
模块导入
1 | import ( |
查询cpu信息
1 | func getCpuInfo() { |
查询cpu负载
1 | func getLoad() { |
查询内存信息
1 | func getHostInfo() { |
查询磁盘信息
1 | func getDiskInfo() { |
查询网络信息
1 | func getNetInfo() { |
Go操作influxDB
安装influxdb V1版本的模块
1 | go get github.com/influxdata/influxdb1-client/v2 |
模块导入
1 | import ( |
连接influxdb,V1版本端口默认为8086,V2版本端口默认为9999,用户名默认为admin,密码默认为空
1 | func connInflux() client.Client { |
查询操作
这里我们查询的是test
数据库。因此我们需要在数据库中手动创建一个test
数据库。
1 | func queryDB(cli client.Client,cmd string) (res []client.Result,err error) { |
写入数据
1 | func writesPoints(cli client.Client) { |
写入数据成功
influxDB客户端查询
Grafana实战
grafna下载地址:https://grafana.com/
macos下载
1 | brew update |
启动grafana,默认端口是3000,访问127.0.0.1:3000即可,默认用户名和密码为admin
1 | brew services start grafana |
Grafana配置influxDB
实时监控cpu状态并存储influxDB中
代码如下
首先在influxdb中创建新的数据库为monitor,之后运行如下代码可以每隔1s获取cpu使用信息
1 | package main |
Grafana展示
在dashboard中创建新的panel
相关配置选择如下
之后可以自定义面板,选择折线图或者柱状图等等,数据就会从influxdb中被展示到面板中。