簡(jiǎn)介
-
Influxdb
Influxdb是一個(gè)開源的分布式時(shí)序、時(shí)間和指標(biāo)數(shù)據(jù)庫(kù),使用go語言編寫,無需外部依賴。它有三大特性:
- 時(shí)序性(Time Series):與時(shí)間相關(guān)的函數(shù)的靈活使用(諸如最大、最小、求和等);
- 度量(Metrics):對(duì)實(shí)時(shí)大量數(shù)據(jù)進(jìn)行計(jì)算;
- 事件(Event):支持任意的事件數(shù)據(jù),換句話說,任意事件的數(shù)據(jù)我們都可以做操作。
同時(shí),它有以下幾大特點(diǎn):
- schemaless(無結(jié)構(gòu)),可以是任意數(shù)量的列;
- min, max, sum, count, mean, median 一系列函數(shù),方便統(tǒng)計(jì);
- Native HTTP API, 內(nèi)置http支持,使用http讀寫;
- Powerful Query Language 類似sql;
- Built-in Explorer 自帶管理工具。
-
Grafana
granfana是一個(gè)open source的圖形化數(shù)據(jù)展示工具,可以自定義datasource,自定義報(bào)表、顯示數(shù)據(jù)等。
環(huán)境準(zhǔn)備
linux 服務(wù)器
安裝步驟
apt-get install influxdb
apt-get install influxdb-client
apt-get install grafana
驗(yàn)證安裝
- 瀏覽器中打開:
http://<server-host>:8083/
,
默認(rèn)賬號(hào)密碼:root/root
能訪問到influxDB的web站點(diǎn)工具,說明influxDB安裝成功。 - 瀏覽器中打開:
http://<server-host>:3000/
默認(rèn)賬號(hào)密碼:admin/admin
能訪問到Grafana,說明Grafana安裝成功。
influxdb相關(guān)操作
-
influxdb 新建數(shù)據(jù)庫(kù)
CREATE DATABASE "db_name"
-
influxdb 插入數(shù)據(jù)
insert cpu,deviceName=iphone value=66
influxDB數(shù)據(jù)庫(kù)操作reference
上述命令有兩個(gè)入口可以使用
- influxdb-client,即influxdb的shell,命令行輸入Influx即可啟動(dòng)。
- influndb提供的web站點(diǎn)。
Paste_Image.png
grafana配置
-
配置數(shù)據(jù)源
Paste_Image.png
- 新建dashboard
新建dashboard
- 新建graph
Paste_Image.png
- 配置graph表格的數(shù)據(jù)從influxdb的篩選方式
Paste_Image.png
*最終效果
Paste_Image.png
利用influxdb的API來寫數(shù)據(jù)
influxdb提供了http請(qǐng)求的方式來向數(shù)據(jù)庫(kù)插入記錄。 (port為8086)
- url :
http://<sever-host>:8086/write?db=testDB
- 請(qǐng)求方式:
post
- 數(shù)據(jù)body:
cpu,deviceName=iphone value=66
- oc 代碼示例
NSURL *url = [NSURL URLWithString:InfluxServer];
//創(chuàng)建請(qǐng)求對(duì)象
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//轉(zhuǎn)化單位為 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];
// 將字符串轉(zhuǎn)為NSData對(duì)象
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");
}
}];
//啟動(dòng)任務(wù)
[dataTask resume];
總結(jié)
influxdb和grafana兩個(gè)開源產(chǎn)品的組合,用來展示數(shù)據(jù),做為一種實(shí)時(shí)監(jiān)控的手段,非常的清晰、優(yōu)雅和高效。安裝簡(jiǎn)便,配置靈活,可運(yùn)用的場(chǎng)景非常廣泛。如果你的產(chǎn)品業(yè)務(wù)也有監(jiān)控展示之類的需求,不妨試一試,你肯定會(huì)愛不釋手的。