美文网首页Golang语言社区
influxDB+Grafana搭建监控平台

influxDB+Grafana搭建监控平台

作者: chenbingle | 来源:发表于2017-03-28 11:32 被阅读2852次

    简介

    1. 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 自带管理工具。
    1. Grafana
      granfana是一个open source的图形化数据展示工具,可以自定义datasource,自定义报表、显示数据等。

    环境准备

    linux 服务器

    安装步骤

      apt-get install influxdb
      apt-get install influxdb-client
      apt-get install grafana
    

    验证安装

    1. 浏览器中打开:http://<server-host>:8083/
      默认账号密码:root/root
      能访问到influxDB的web站点工具,说明influxDB安装成功。
    2. 浏览器中打开:http://<server-host>:3000/
      默认账号密码:admin/admin
      能访问到Grafana,说明Grafana安装成功。

    influxdb相关操作

    • influxdb 新建数据库

      CREATE DATABASE "db_name"
      
    • influxdb 插入数据

      insert cpu,deviceName=iphone value=66
      

    influxDB数据库操作reference

    上述命令有两个入口可以使用

    1. influxdb-client,即influxdb的shell,命令行输入Influx即可启动。
    2. 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两个开源产品的组合,用来展示数据,做为一种实时监控的手段,非常的清晰、优雅和高效。安装简便,配置灵活,可运用的场景非常广泛。如果你的产品业务也有监控展示之类的需求,不妨试一试,你肯定会爱不释手的。

    相关文章

      网友评论

        本文标题:influxDB+Grafana搭建监控平台

        本文链接:https://www.haomeiwen.com/subject/ylfjottx.html