详情页标题前

阿里云日志服务SLS通过JDBC协议分析日志-云淘科技

详情页1

日志服务支持您在数据库(例如MySQL)中使用JDBC协议连接日志服务,并通过标准的SQL92语法查询和分析日志。

前提条件

  • 已创建阿里云账号或RAM用户的AccessKey。具体操作,请参见访问密钥。

    如果使用RAM用户的AccessKey,则RAM用户必须是当前Project所属阿里云账号的RAM用户,且具备Project级别的读权限。如何授权,请参见配置权限助手。

  • 已创建Logstore。具体操作,请参见创建Logstore。

版本说明

目前日志服务仅支持JDBC 5.1.49版本。

连接参数

此处以MySQL数据库为例,介绍连接参数。重要 MySQL JDBC不支持分页。

  • 连接语法的格式
    mysql -h host -u user -p password -P port
    use database;
  • 示例
    mysql -h my-project.cn-hangzhou-intranet.log.aliyuncs.com -u bq****mo86kq -p 4f****uZP -P 10005
    use my-project; 
  • 参数说明
    参数 说明
    host 日志服务访问域名,必须添加Project名称,即格式为Project名称.私网服务入口。例如my-project.cn-hangzhou-intranet.log.aliyuncs.com。

    目前仅支持私网服务入口(阿里云经典网络和VPC网络的访问域名)。更多信息,请参见私网服务入口。

    port 默认使用10005。
    user 阿里云AccessKey ID。建议使用RAM用户的AccessKey。
    password 阿里云AccessKey Secret。建议使用RAM用户的AccessKey。
    database 日志服务Project名称。重要 一个数据库同时只支持连接一个Project。
    table 日志服务Logstore名称。重要 您需在查询和分析语句中指定Logstore。

查询和分析语法

  • 过滤语法 说明 在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

    where过滤语法说明如下表所示。

    语义 示例 说明
    字符串搜索 key = “value” 查询的是分词之后的结果。
    字符串模糊搜索
    • key has ‘valu*’
    • key like ‘value_%’
    查询的是分词之后模糊匹配的结果。
    数值比较 num_field > 1 比较运算符包括>、>=、=、<和<=。
    逻辑运算 and or not 例如a = “x” and b =”y”或a = “x” and not b =”y”。
    全文搜索 __line__ =”abc” 如果使用全文索引搜索,需使用特殊的key(__line__)。
  • 计算语法

    支持计算操作符。更多信息,请参见分析语法。

  • SQL92语法 过滤语法和计算语法组合成为SQL92语法。
    status>200 |select avg(latency),max(latency) ,count(1) as c GROUP BY  method  ORDER BY c DESC  LIMIT 20

    您可以将上述查询和分析语句中的分析语句与时间条件组合成为查询条件,变成标准SQL92语法,如下所示:

    select avg(latency),max(latency) ,count(1) as c from sample-logstore where status>200 and __time__>=1500975424 and __time__ < 1501035044 GROUP BY  method  ORDER BY c DESC  LIMIT 20

通过JDBC协议访问日志服务

  • 程序调用 您可以在任何一个支持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://projectname.cn-hangzhou-intranet.log.aliyuncs.com:10005/sample-project","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 sample-logstore where  __time__>=1500975424 and __time__  0  and latency '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' )";
                String sql_example3 = "select count(1) from  sample-logstore 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();
                    }
                }
            }
        }
    }
  • 工具类调用 在经典网络或VPC网络中通过MySQL客户端进行连接。阿里云日志服务SLS通过JDBC协议分析日志-云淘科技
    • ①、②处配置为您的Project。
    • ③处配置为您的Logstore。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/165804.html

(0)
上一篇 2023年12月10日
下一篇 2023年12月10日
详情页2

相关推荐

  • 腾讯云GPU云服务器使用视频增型实例 GN7vi 实现视频画质增强

    操作场景 本文介绍如何在视频增强型实例 GN7vi 服务器上进行视频编解码和 AI 画质增强。视频增强型实例 GN7vi 提供了视频编解码功能和 AI 画质增强功能,使用方式和开源 FFmpeg 完全兼容,您可以参考本文完成视频画质处理。 操作步骤 实例环境准备 参见 创建 NVIDIA GPU 实例 创建一台实例。其中:实例:根据对 GPU 和内核数量的需…

    2023年12月9日
  • 腾讯云对象存储Logo 识别

    简介 本文档提供关于 Logo 识别相关的 API 概览以及 SDK 示例代码。 API 操作描述 Logo 识别 对象存储通过数据万象 RecognizeLogo 接口实现对图片内电商 Logo 的识别,返回图片中 Logo 的名称、坐标、置信度分值。 SDK API 参考 SDK 所有接口的具体参数与方法说明,请参考 SDK API。 Logo 识别 对…

    腾讯云 2023年12月9日
  • 腾讯云对象存储提交多文件打包压缩任务

    功能描述 多文件打包压缩功能可以将您的多个文件,打包为 zip 等压缩包格式,以提交任务的方式进行多文件打包压缩,异步返回打包后的文件,该接口属于 POST 请求。 授权说明 授权策略中 action 设置为 ci:CreateFileProcessJobs 。查看所有 action。 服务开通 使用该功能需提前开通数据万象,并绑定存储桶。详情请参见 绑定存…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储自定义域名

    简介 本文档提供关于自定义域名的 API 概览以及 SDK 示例代码。 API 操作名 操作描述 PUT Bucket domain 设置自定义域名 设置存储桶的自定义域名信息 GET Bucket domain 查询自定义域名 查询存储桶的自定义域名信息 设置自定义域名 功能说明 PUT Bucket domain 用于为存储桶配置自定义域名。 方法原型 …

    腾讯云 2023年12月9日
  • 腾讯云云点播TCPlayer 快直播降级说明

    降级场景 快直播基于 WebRTC 实现,依赖于操作系统和浏览器对于 WebRTC 的支持。目前,SDK 对以下操作系统和浏览器进行了测试,测试结果如下: 操作系统 操作系统版本 浏览器类型 浏览器版本 是否支持拉流 Windows win 10 Chrome 86+ ✓   Firefox 88+ ✓   Microsoft Edge 86+ ✓ …

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。