使用C SDK 进行数据上报

    现在移动端及物联网终端越来越普及,大家都有自己的APP,想要把数据从终端上传上来进行分析。有不少底层代码是用C/Cpp写成,想上报数据,Pandora 有现成的SDK 提供使用。比如播放器的播放行为上报,监控设备使用情况上报,等等。

    Github地址:SDK-C

    接入步骤:

    1. PANDORA_Points* points = pandora_points_new();
    2. pandora_points_add_long(points, "ll", 999988887L);
    3. pandora_points_add_string(points, "str", "hello");
    4. pandora_points_add_float(points, "dbl", 999.99);
    5. pandora_points_add_boolean(points, "bool", 0);
    6. pandora_points_add_time(points, "tm", time(NULL));
    7. pandora_points_newline(points);
    8. pandora_points_add_long(points, "ll", 888888L);
    9. pandora_points_add_string(points, "str", "llo");
    10. pandora_points_add_float(points, "dbl", 666.66);
    11. pandora_points_add_boolean(points, "bool", 1);
    12. pandora_points_add_time(points, "tm", time(NULL));
    13. pandora_points_newline(points);
    14. PANDORA_curl_send("csdk",
    15. "token...",
    16. points);
    17. pandora_points_delete(points);

    具体数值字段支持long,double,time,Bool, 字符串. 可以一次上传单条或者多条数据。

    如果想上传文件,请按照如下步骤来操作:

    • 前两步相同

    • 在七牛实时日志上传这里进行文件上传, 具体参考 logdb 文档,将文件中的字段都解析出来。如SDK 中带的syslog 这种格式的文件都可以

    • 如果文件需要滚动处理建议使用系统的日志滚动配置,但文件不能进行压缩,或者使用 https://github.com/logrotate/logrotate 编译后的命令。另外一种方案是参考logrotate的代码自己进行定时的日志滚动

    • 代码示例:

      1. PANDORA_CURL_CODE c = PANDORA_curl_send_file("syslog",
      2. "Pandora 0knikszBTnSnfqhcWLw1yvunjhqweRYSV2GlLbrP:_WQP2SeErz10br9Q5tCzyEN1qHQ=:eyJyZXNvdXJjZSI6Ii92Mi9yZXBvcy9zeXNsb2cvZGF0YSIsImV4cGlyZXMiOjQ2ODE5NDE1NDYsImNvbnRlbnRNRDUiOiIiLCJjb250ZW50VHlwZSI6InRleHQvcGxhaW4iLCJoZWFkZXJzIjoiIiwibWV0aG9kIjoiUE9TVCJ9",
      3. "./x.log");

      log文件示例:

      1. Jan 1 00:00:22 NiuDemo syslog.info syslogd started: BusyBox v1.22.1
      2. Apr 2 10:27:05 NiuDemo daemon.info button[116]: (116) main L69: Run in daemon
      3. Apr 2 10:27:05 NiuDemo daemon.debug button[116]: (116) KeyEvent_Init L69: _gpio_proc_fd:6
      4. Apr 2 10:27:05 NiuDemo daemon.info button[116]: (116) RunShellInSubProcessFile L14: run shell: /usr/button/debug_mode_monitor
      5. Apr 2 10:27:05 NiuDemo daemon.debug button[117]: (117) KeyEvent_Release L77: _gpio_proc_fd:6
      6. Apr 2 10:27:05 NiuDemo daemon.debug button[116]: (116) main L82: _child_pid:117
      7. Jun 4 19:14:49 NiuDemo daemon.debug proxy_system_daemon[199]: main L37: proxy_execute_daemon started.
      8. Jun 4 19:14:49 NiuDemo daemon.debug proxy_system_daemon[204]: proxy_execute_thread L22: thread start, queue=0x413018
      9. Jun 4 19:14:49 NiuDemo daemon.err telnetd[202]: bind: Address already in use
      10. Jun 4 19:14:49 NiuDemo

    上传之后的数据查询可以直接在日志仓库直接进行查询, 以及使用 Grafana 进行展示、监控和告警。