使用jdbc访问日志服务分析和可视化日志
简介
一直以来,日志服务提供了 以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 driverClass.forName("com.mysql.jdbc.Driver");//STEP 3: Open a connectionSystem.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 querySystem.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 setwhile(rs.next()){//Retrieve by column nameResultSetMetaData 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连接
使用DavaV连接展示日志服务
可视化大屏DataV提供数据的展示功能,可以对接日志服务读取日志数据,或展示日志计算结果。
1. 创建数据源
数据源可以选择mysql for RDS或者简单日志服务,根据自己的需求选择对应的方式,这里以mysql协议为例,展示如何接入。
如图所示,选择对应的地域,网络选择内网,用户名和密码填写accesskey ,可以是主账号的accessKey,也可以是有权限读取日志服务的子帐号accessKey。端口输入10005,数据库输入project名称。
2. 创建视图
视图中选择好业务的模板,然后点击大屏中的任何一个视图,右侧点击修改数据,修改视图的数据源。
如图,数据源选择上文创建的数据库,输入查询的SQL,在上边的字段映射中,输入查询结果和视图字段的映射关系。
3. 预览视图并发布
点击预览,可以查看预览效果:
使用jdbc访问日志服务分析和可视化日志相关推荐
- ELK日志服务使用-kafka传输日志(bbotte.com)
本文转载于 http://bbotte.com/ ELK日志服务使用-kafka传输日志 对于日志传输,rsyslog或者logstash也就够用了,一般的redis,kafka,主要是作为缓冲或序 ...
- 10.11杭州Clouder lab 十分钟搭建共享应用 2:如何通过日志服务实现用户的日志收集与分析...
场景描述 共享电动车企业使用函数服务搭建服务端.在函数服务中开启日志,把程序日志写到日志服务,同时在函数代码中使用SDK把运营日志写入到日志服务,使用日志服务进行日志分析. 在日志服务中,用户可以: ...
- 容器服务Windows Kubernetes使用阿里云日志服务来收集容器日志
目前,容器服务Windows Kubernetes支持将业务容器产生的stdout输出.日志文件同步到阿里云日志服务(SLS)进行统一管理. 支撑组件安装 在Windows Kubernetes集群安 ...
- Kibana:分析及可视化日志文件
留坑 候补 转载于:https://www.cnblogs.com/slowcity/p/10162029.html
- 阿里云日志服务grafana可视化探索
一.背景 网站前端启用了阿里云的负载均衡,各类日志很方便的接入阿里云的日志服务,目前对于日志服务后台提供的可视化不甚满意,故探索grafana对其可视化. 二.目的 1.根据nginx日志(slb)来 ...
- MySQL 慢查询日志分析及可视化结果
MySQL 慢查询日志分析及可视化结果 MySQL 慢查询日志分析 pt-query-digest分析慢查询日志 pt-query-digest --report slow.log 报告最近半个小时的 ...
- 日志服务(原SLS)新功能发布(4)-- 使用OSS进行日志存储与分析
对于大部分开发者而言,经常会面临这样一种场景:"我知道日志数据很宝贵,但今天没有明确需求,能否有一种成本很低的方案先把日志备份起来,不占用空间.有一天有明确需求时,能够快速.方便分析日志&q ...
- aliyun 日志服务(Log Service,Log)是针对日志场景的一站式服务
日志服务(Log Service,Log)是针对日志场景的一站式服务,在阿里巴巴集团内部被广泛使用.用户无需开发就能快捷完成日志生命周期中采集.消费.投递以及查询功能. 日志服务当前提供如下功能 日志 ...
- 日志服务(SLS)集成 Spark 流计算实战
前言 日志服务作为一站式的日志的采集与分析平台,提供了各种用户场景的日志采集能力,通过日志服务提供的各种与·与SDK,采集客户端(Logtail),Producer,用户可以非常容易的把各种数据源中的 ...
- 日志服务与SIEM(如Splunk)集成方案实战
背景信息 目标 本文主要介绍如何让阿里云日志服务与您的SIEM方案(如Splunk)对接, 以便确保阿里云上的所有法规.审计.与其他相关日志能够导入到您的安全运维中心(SOC)中. 名词解释 LOG( ...
最新文章
- MOD函数语法和参数
- Appium base knowledge
- 最优化——线性规划中最大规划和最小规划之间的转换
- python 常量_大疆机甲大师Python开发: 两只老虎
- boost::mpi模块实现一个简单的点类,我们可以构建、添加、比较和 连载
- UINavigationController
- (七)python3 只需3小时带你轻松入门——List与dict
- 【HAOI2015】按位或【Min-Max容斥】【FWT】
- Python @property装饰器的用法,判断函数参数整形、字符串、取值范围
- python模拟登录webspare_全面解读python web 程序的9种部署方式
- mq补偿机制java代码_RocketMQ源码分析之消息消费机制-消费端消息负载均衡机制与重新分布 - Java 技术驿站-Java 技术驿站...
- 面向对象程序设计中“超类”和“子类”概念的来历
- webpack2 项目
- python可迭代对象相关的内建函数_python之函数闭包、可迭代对象和迭代器
- 2013年最新十大xp系统下载排行榜-无极系统下载站
- Python语言程序设计基础_实验四_函数(一)_答案_通识教育必修课程_上海师范大学
- 小米9开发版已开启Android,小米9 MIUI安卓10开发版已开始推送,建议大家不要去升级...
- 计算机组老师颁奖词,学生表彰颁奖词与学生计算机室管理制度合集.doc
- sqlite优化简单分析
- 摄像头各参数的意义_手机摄像头的一些主要参数表达了什么意思?