jdbc访问mysql日志_使用jdbc访问日志服务分析和可视化日志-阿里云开发者社区

阿里云日志服务新增了MySQL接口,允许用户通过JDBC使用SQL语法查询和分析日志。支持标准MySQL客户端,如mysql client、jdbc和Python MySQLdb。用户可以使用数据可视化工具(如DataV、Tableau)或编程方式(如Java、Python)连接日志服务,进行日志数据的处理和查询。注意在SQL查询中需包含时间条件,例如`__date__`或`__time__`。
摘要由CSDN通过智能技术生成

简介

一直以来,日志服务提供了 以restfull API方式写入、查询日志数据,管理自己的项目及日志库。现在日志服务新增提供了mysql 接口,用户可以使用jdbc连接到日志服务,通过标准的sql语法进行查询和计算。

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

使用可视化类工具,例如dataV, Tableau, Kibana来通过mysql协议连接日志服务。

使用java的jdbc,python的MySQLdb等库在程序中访问日志服务,在程序中处理查询结果。

使用方法

数据模型映射

日志服务数据模型

SQL数据模型

project

database

logstore

table

accesskeyId

user

accessKey

password

支持的region

目前仅支持经典网络内网访问和VPC网络访问。各个地域的地址参考文档。地址为内网域名和VPC域名,端口为10005。

帐号和权限

访问jdbc接口,必须使用主账号的ak或者子帐号的ak,子帐号必须是project owner的子帐号,同时子帐号具有project级别的读权限。

查询注意事项

在 where条件中必须包含__date__或__time__来限制查询的时间范围。__date__是timestamp类型 __time__是bigint类型。

例如

__date__ > '2017-08-07 00:00:00' and __date__ < '2017-08-08 00:00:00'

__time__ > 1502691923 and __time__ < 1502692923

上述两种条件必须出现一个。

支持的filter语法

字符串搜索:key = "value" ,查询的是分词之后的结果。

字符串模糊搜索: key = "valu*" , 查询的是分词之后模糊匹配的结果。

数值比较: num_field > 1, 支持的比较运算符包括> >= = < <=。

逻辑运算: and or not。例如 a = "x" and b ="y" 或 a = "x" and not b ="y"

如果使用全文索引搜索,需要使用特殊的key __line__ ,例如 __line__ ="abc"

支持的计算

支持的计算语法参见文档

在程序中使用

开发者可以在任何一个支持mysql connector的程序中使用mysql语法连接日志服务。例如使用jdbc或者python MySQLdb。

使用样例

import com.mysql.jdbc.*;

import java.sql.*;

import java.sql.Connection;

import java.sql.ResultSetMetaData;

import java.sql.Statement;

public class testjdbc {

public static void main(String args[]){

Connection conn = null;

Statement stmt = null;

try {

//STEP 2: Register JDBC driver

Class.forName("com.mysql.jdbc.Driver");

//STEP 3: Open a connection

System.out.println("Connecting to a selected database...");

conn = DriverManager.getConnection("jdbc:mysql://cn-shanghai-intranet.sls.aliyuncs.com:10005/shproject1","accessid","accesskey");

System.out.println("Connected database successfully...");

//STEP 4: Execute a query

System.out.println("Creating statement...");

stmt = conn.createStatement();

String sql = "SELECT method,min(latency,10) as c,max(latency,10) from sls_operation_log " +

"where __time__>=1500975424 and __time__ < 1501035044 and __time__ < 1501035044 " +

" and latency > 0 and latency < 6142629 and not ( method='Postlogstorelogs' or method='GetLogtailConfig') group by method " ;

sql = "select count(1) ,max(latency),avg(latency), histogram(method),histogram(source),histogram(status),histogram(clientip),histogram(__source__) from test10 where __date__ > '2017-07-20 00:00:00' " +

" and __date__ < '2017-08-02 00:00:00'" +

" and __line__='abc#def' and latency < 100000 and (method = 'getlogstorelogS' or method='Get**' and method <> 'GetCursorOrData' )";

sql = "select count(1) from sls_operation_log where __date__ > '2017-08-07 00:00:00' " +

" and __date__ < '2017-08-08 00:00:00' limit 100";

ResultSet rs = stmt.executeQuery(sql);

//STEP 5: Extract data from result set

while(rs.next()){

//Retrieve by column name

ResultSetMetaData data = rs.getMetaData();

System.out.println(data.getColumnCount());

for(int i = 0;i < data.getColumnCount();++i) {

String name = data.getColumnName(i+1);

System.out.print(name+":");

System.out.print(rs.getObject(name));

}

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();

}

}

}

}

}

使用mysql client连接

369532001512e4cf605b2268fd06787c.png

使用DavaV连接展示日志服务

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

1. 创建数据源

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

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

c9bf126758e170663a95d64662f0ed95.png

2. 创建视图

1985cdd1fe7922a24a36427c8d23087d.png

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

bddbd259331182bd8fe7caa833ccb6ba.png

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

3. 预览视图并发布

6c824aa194118785965bbbd063b3dd7d.png

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

b896d26ec845024b20adecccc7c87f6f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值