博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用jdbc统计和可视化日志
阅读量:6856 次
发布时间:2019-06-26

本文共 3782 字,大约阅读时间需要 12 分钟。

简介

mysql作为非常流行的关系型数据库,很多软件支持通过mysql传输协议和sql语法获取mysql数据。用户只需要对sql语法熟悉,即可完成对接。日志服务提供了查询和分析日志数据。用户可以使用标准mysql客户端连接到日志服务,使用标准的sql语法计算和分析日志。支持mysql传输协议的客户端包括,mysql client,jdbc, Python MySQLdb。例如,我们使用tableau,通过mysql协议连接日志服务,读取日志数据。有两种场景使用jdbc:

  1. 使用可视化类工具,例如dataV, Tableau, Kibana来通过mysql协议连接日志服务。
  2. 使用java的jdbc,python的MySQLdb等库在程序中访问日志服务,在程序中处理查询结果。

本文将介绍如何使用mysql协议和sql语法来计算日志。

数据样例

以共享单车日志为例,日志内容包括用户年龄,电量使用量,车辆id,性别,操作延时,纬度,锁类型,经度,操作类型,操作结果,开锁方式。数据保存在project:trip_demo的logstore:ebike中。在控制台给logstore的每一列开启索引和分析功能 。project所在地域是cn-hangzhou

Time :10-12 14:26:44__source__:  11.164.232.105  __topic__:  v1  age:  55  battery:  118497.673842  bikeid:  36  gender:  male  latency:  17  latitude:  30.2931185245  lock_type:  smart_lock  longitude:  120.052840484  op:  unlock  op_result:  ok  open_lock:  bluetooth  userid:  292

JDBC统计

首先创建一个maven项目,在pom依赖中添加jdbc依赖。

mysql
mysql-connector-java
5.1.6

新建一个java类,在代码中使用jdbc进行查询:

/** * Created by mayunlei on 2017/6/19. */import com.mysql.jdbc.*;import java.sql.*;import java.sql.Connection;import java.sql.Statement;/** * Created by mayunlei on 2017/6/15. */public class jdbc {    public static void main(String args[]){         //在这里修改成你的配置        final String endpoint = "cn-hangzhou-intranet.sls.aliyuncs.com";//日志服务内网或VPC域名        final String port = "10005"; //日志服务mysql 协议端口        final String project = "trip-demo";        final String logstore = "ebike";        final String accessKeyId = "";        final String accessKey = "";        Connection conn = null;        Statement stmt = null;        try {            //步骤1 : 加载jdbc驱动            Class.forName("com.mysql.jdbc.Driver");            //步骤2 : 创建一个链接            conn = DriverManager.getConnection("jdbc:mysql://"+endpoint+":"+port+"/"+project,accessKeyId,accessKey);            //步骤3 : 创建statement            stmt = conn.createStatement();            //步骤4 : 定义查询语句,查询2017年10月11日全天日志中满足条件op = "unlock"的日志条数,操作平均延时            String sql = "select count(1) as pv,avg(latency) as avg_latency from "+logstore+"  " +                    "where     __date__  >=  '2017-10-11 00:00:00'   " +                    "     and  __date__  <   '2017-10-12 00:00:00'" +                    " and     op ='unlock'";            //步骤5 : 执行查询条件            ResultSet rs = stmt.executeQuery(sql);            //步骤5 : 提取查询结果            while(rs.next()){                //Retrieve by column name                System.out.print("pv:");                //获取结果中的pv                System.out.print(rs.getLong("pv"));                System.out.print(" ; avg_latency:");                //获取结果中的avg_latency                System.out.println(rs.getDouble("avg_latency"));                System.out.println();            }            rs.close();        } catch (ClassNotFoundException e) {            e.printStackTrace();        } catch (SQLException e) {            e.printStackTrace();        } catch (Exception e) {            e.printStackTrace();        } finally {            if (stmt != null) {                try {                    stmt.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }            if (conn != null) {                try {                    conn.close();                } catch (SQLException e) {                    e.printStackTrace();                }            }        }    }}

使用DavaV连接展示日志服务

可视化大屏提供数据的展示功能,可以对接日志服务读取日志数据,或展示日志计算结果。

1. 创建数据源

数据源可以选择mysql for RDS或者简单日志服务,根据自己的需求选择对应的方式,这里以mysql协议为例,展示如何接入。

如图所示,选择对应的地域,网络选择内网,用户名和密码填写accesskey ,可以是主账号的accessKey,也可以是有权限读取日志服务的子帐号accessKey。端口输入10005,数据库输入project名称。

image.png

2. 创建视图

image.png

视图中选择好业务的模板,然后点击大屏中的任何一个视图,右侧点击修改数据,修改视图的数据源。

image

如图,数据源选择上文创建的数据库,输入查询的SQL,在上边的字段映射中,输入查询结果和视图字段的映射关系。

3. 预览视图并发布

image.png

点击预览,可以查看预览效果:

image

转载地址:http://msiyl.baihongyu.com/

你可能感兴趣的文章
课后作业
查看>>
laravel ORM 命令2
查看>>
java笔记javaweb部分
查看>>
浏览器插件 - 通用注入模版JS
查看>>
android布局学习
查看>>
js中createlement和creatTextnode属性
查看>>
DL4NLP——词表示模型(二)基于神经网络的模型:NPLM;word2vec(CBOW/Skip-gram)...
查看>>
David Freedman统计学书评
查看>>
[转]Becoming a JavaScript ninja
查看>>
java中数据类型转换
查看>>
带上下界的网络流
查看>>
搭建高可用mongodb集群(三)—— 深入副本集内部机制
查看>>
layer.js子窗口关闭并传数据到父窗的方法
查看>>
koa2入门(2) koa-router 路由处理
查看>>
记一次中台数据传输同步Elasticsearch失败的车祸现场
查看>>
找暑期实习总结
查看>>
转载:技术人员的管理思维观
查看>>
如何使用Dilworth定理
查看>>
7.11 求总和的百分比
查看>>
Python入门
查看>>