簡(jiǎn)介
-
Influxdb
Influxdb是一個(gè)開(kāi)源的分布式時(shí)序、時(shí)間和指標(biāo)數(shù)據(jù)庫(kù),使用go語(yǔ)言編寫(xiě),無(wú)需外部依賴(lài)。它有三大特性:
- 時(shí)序性(Time Series):與時(shí)間相關(guān)的函數(shù)的靈活使用(諸如最大、最小、求和等);
- 度量(Metrics):對(duì)實(shí)時(shí)大量數(shù)據(jù)進(jìn)行計(jì)算;
- 事件(Event):支持任意的事件數(shù)據(jù),換句話(huà)說(shuō),任意事件的數(shù)據(jù)我們都可以做操作。
同時(shí),它有以下幾大特點(diǎn):
- schemaless(無(wú)結(jié)構(gòu)),可以是任意數(shù)量的列;
- min, max, sum, count, mean, median 一系列函數(shù),方便統(tǒng)計(jì);
- Native HTTP API, 內(nèi)置http支持,使用http讀寫(xiě);
- Powerful Query Language 類(lèi)似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)證安裝
- 瀏覽器中打開(kāi):
http://<server-host>:8083/,
默認(rèn)賬號(hào)密碼:root/root
能訪問(wèn)到influxDB的web站點(diǎn)工具,說(shuō)明influxDB安裝成功。 - 瀏覽器中打開(kāi):
http://<server-host>:3000/
默認(rèn)賬號(hào)密碼:admin/admin
能訪問(wèn)到Grafana,說(shuō)明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來(lái)寫(xiě)數(shù)據(jù)
influxdb提供了http請(qǐng)求的方式來(lái)向數(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è)開(kāi)源產(chǎn)品的組合,用來(lái)展示數(shù)據(jù),做為一種實(shí)時(shí)監(jiān)控的手段,非常的清晰、優(yōu)雅和高效。安裝簡(jiǎn)便,配置靈活,可運(yùn)用的場(chǎng)景非常廣泛。如果你的產(chǎn)品業(yè)務(wù)也有監(jiān)控展示之類(lèi)的需求,不妨試一試,你肯定會(huì)愛(ài)不釋手的。
