简介
-
Influxdb
Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。它有三大特性:
- 时序性(Time Series):与时间相关的函数的灵活使用(诸如最大、最小、求和等);
- 度量(Metrics):对实时大量数据进行计算;
- 事件(Event):支持任意的事件数据,换句话说,任意事件的数据我们都可以做操作。
同时,它有以下几大特点:
- schemaless(无结构),可以是任意数量的列;
- min, max, sum, count, mean, median 一系列函数,方便统计;
- Native HTTP API, 内置http支持,使用http读写;
- Powerful Query Language 类似sql;
- Built-in Explorer 自带管理工具。
-
Grafana
granfana是一个open source的图形化数据展示工具,可以自定义datasource,自定义报表、显示数据等。
环境准备
linux 服务器
安装步骤
apt-get install influxdb
apt-get install influxdb-client
apt-get install grafana
验证安装
- 浏览器中打开:
http://<server-host>:8083/
,
默认账号密码:root/root
能访问到influxDB的web站点工具,说明influxDB安装成功。 - 浏览器中打开:
http://<server-host>:3000/
默认账号密码:admin/admin
能访问到Grafana,说明Grafana安装成功。
influxdb相关操作
-
influxdb 新建数据库
CREATE DATABASE "db_name"
-
influxdb 插入数据
insert cpu,deviceName=iphone value=66
上述命令有两个入口可以使用
- influxdb-client,即influxdb的shell,命令行输入Influx即可启动。
- influndb提供的web站点。
Paste_Image.png
grafana配置
-
配置数据源
Paste_Image.png
- 新建dashboard
新建dashboard
- 新建graph
Paste_Image.png
- 配置graph表格的数据从influxdb的筛选方式
Paste_Image.png
*最终效果
Paste_Image.png
利用influxdb的API来写数据
influxdb提供了http请求的方式来向数据库插入记录。 (port为8086)
- url :
http://<sever-host>:8086/write?db=testDB
- 请求方式:
post
- 数据body:
cpu,deviceName=iphone value=66
- oc 代码示例
NSURL *url = [NSURL URLWithString:InfluxServer];
//创建请求对象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//转化单位为 M
NSNumber *data = [NSNumber numberWithInteger:(int)((float)[self getResidentMemory]/1024/1024)];
UIDevice *device = [UIDevice currentDevice];
NSString *currentDeviceId = [[device identifierForVendor]UUIDString];
NSString *parmStr = [NSString stringWithFormat:@"mem,uuid=%@,deviceName=%@ value=%@", currentDeviceId, device.name, data];
// 将字符串转为NSData对象
NSData *pramData = [parmStr dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPMethod:@"POST"];
[request setHTTPBody:pramData];
// NSLog(@"%@",arr);
NSURLSession *session =[NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if(error) {
NSLog(@"upload data to influxDB fail");
}
}];
//启动任务
[dataTask resume];
总结
influxdb和grafana两个开源产品的组合,用来展示数据,做为一种实时监控的手段,非常的清晰、优雅和高效。安装简便,配置灵活,可运用的场景非常广泛。如果你的产品业务也有监控展示之类的需求,不妨试一试,你肯定会爱不释手的。