使用jdbc统计和可视化日志

简介

mysql作为非常流行的关系型数据库,很多软件支持通过mysql传输协议和sql语法获取mysql数据。用户只需要对sql语法熟悉,即可完成对接。日志服务提供了mysql协议查询和分析日志数据。用户可以使用标准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依赖。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>

新建一个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连接展示日志服务

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

1. 创建数据源

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

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

2. 创建视图

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

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

3. 预览视图并发布

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

时间: 2024-09-16 00:45:28

使用jdbc统计和可视化日志的相关文章

使用增强型PreparedStatement向JDBC代码增加日志功能

在大多数情况下,JDBC PreparedStatements 使执行数据库查询更简便并可以显著提升您整体应用程序的性能.当谈到日志查询语句时 PreparedStatement 接口就显得有些不足了. PreparedStatement 的优势在于其可变性,但是一个好的日志条目必须正确描述如何将SQL发送到数据库,它将密切关注用实际的参数值来替换所有参数占位符.虽然有多种方法可以解决这一难题,但没有任何一种易于大规模实施并且大部分将扰乱您的程序代码. 在本文中,您将了解到如何扩展JDBC Pr

手把手教你完成MaxCompute JDBC自定义日志配置

注:MaxCompute原名ODPS,是阿里云自研的大数据计算平台,文中出现的MaxCompute与ODPS都指代同一平台,不做区分 与MaxCompute JDBC相关的日志有两种,一种是由JDBC内部代码直接输出的日志,第二种是JDBC抛出异常后,由调用JDBC API的宿主应用捕获后输出的.由于第二类日志取决于宿主应用如何处理异常及如何配置日志体系,所以本文主要讨论的对象是第一种日志. 在2.0-beta之前,MaxCompute JDBC的日志只会输出到命令行终端(标准输出流),它底层使

使用jdbc访问日志服务

简介 一直以来,日志服务提供了 以restfull API方式写入.查询日志数据,管理自己的项目及日志库.现在日志服务新增提供了mysql 接口,用户可以使用jdbc连接到日志服务,通过标准的sql语法进行查询和计算. 使用方法 数据模型映射 日志服务数据模型 SQL数据模型 project database logstore table accesskeyId user accessKey password 支持的region 目前仅支持经典网络内网访问和VPC网络访问.各个地域的地址参考文档

5分钟搭建网站实时分析:Grafana+日志服务实战

阿里云日志服务是针对日志类数据一站式服务,用户只需要将精力集中在分析上,过程中数据采集.对接各种存储计算.数据索引和查询等琐碎工作等都可以交给服务.2017年9月日志服务加强日志实时分析功能(LogSearch/Analytics),可以使用查询+SQL92语法对日志进行实时分析. 在结果分析可视化上,除了使用自带Dashboard外,还支持DataV.Grafana.Tableua.QuickBI等对接方式.本文主要通过一个例子,演示如何通过日志服务对Nginx日志进行分析与可视化. 演示:线

ELK Stack日志实时收集分析

ELK stack ELK stack是又Elasticsearch,lostash,kibana 三个开源软件的组合而成,形成一款强大的实时日志收集分析展示系统. Logstash:日志收集工具,可以从本地磁盘,网络服务(自己监听端口,接受用户日志),消息队列中收集各种各样的日志,然后进行过滤分析,并将日志输入到Elasticsearch中. Elasticsearch:日志分布式存储/搜索工具,原生支持集群功能,可以将指定时间的日志生成一个索引,加快日志查询和访问. Kibana:可视化日志

高可用日志探险——基于 Kubernetes 中的 ELK

本文讲的是高可用日志探险--基于 Kubernetes 中的 ELK[编者的话]本文主要讲述了作者的团队基于 Kubernetes 中的 ELK,构建高可用日志系统的实践,并总结一些过程中踩到的坑和一些对于从头开始搭建的建议,本文也是此系列文章的第一篇,后续文章可持续关注. [3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站]本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览:持续集成系统介绍:客户端与服务端的 CI/CD 实践:开

通用权限系统框架功能实现设计

1  开发环境技术:B/S(.NET C# ) 1.Windows 7及以上 (支援最新Win 8) 2.Microsoft Visual Studio 2013 C#.NET 3..NET Framework 4.0及以上 (支援最新4.5版本) 4.SQL Server 2008 R2及以上 (支援2012/2014)框架特点 2  系统简介 1.帮企业快速地实现各种通用功能,结合系统现有的通用权限管理功能. 2.快速地开发出各种项目应用系统.让企业开发一个系统变得非常轻松. 3.符合RBA

Github优秀java项目集合(中文版) - 涉及java所有的知识体系 -- good

Java资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容包括:构建工具.数据库.框架.模板.安全.代码分析.日志.第三方库.书籍.Java 站点等等.伯乐在线已经把 awesome-java 资源列表翻成中文后发布于 ImportNew. Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更

Java资源大全中文版(Awesome最新版)

目录 业务流程管理套件 字节码操作 集群管理 代码分析 编译器生成工具 构建工具 外部配置工具 约束满足问题求解程序 持续集成 CSV解析 数据库 数据结构 时间日期工具库 依赖注入 开发流程增强工具 分布式应用 分布式数据库 发布 文档处理工具 函数式编程 游戏开发 GUI 高性能计算 IDE 图像处理 JSON JVM与JDK 基于JVM的语言 日志 机器学习 消息传递 杂项 应用监控工具 原生开发库 自然语言处理 网络 ORM PDF 性能分析 响应式开发库 REST框架 科学计算与分析