influxDB+Grafana搭建监控平台

简介

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容