influxDB+Grafana搭建監(jiān)控平臺(tái)

簡(jiǎn)介

  1. 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 自帶管理工具。
  1. 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)證安裝

  1. 瀏覽器中打開:http://<server-host>:8083/
    默認(rèn)賬號(hào)密碼:root/root
    能訪問到influxDB的web站點(diǎn)工具,說明influxDB安裝成功。
  2. 瀏覽器中打開: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è)入口可以使用

  1. influxdb-client,即influxdb的shell,命令行輸入Influx即可啟動(dòng)。
  2. 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ì)愛不釋手的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容