使用jdbc访问日志服务分析和可视化日志

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 简介 一直以来,日志服务提供了 以restfull API方式写入、查询日志数据,管理自己的项目及日志库。现在日志服务新增提供了mysql 接口,用户可以使用jdbc连接到日志服务,通过标准的sql语法进行查询和计算。

简介

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

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等库在程序中访问日志服务,在程序中处理查询结果。

使用方法

数据模型映射

日志服务数据模型 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语法

  1. 字符串搜索:key = "value" ,查询的是分词之后的结果。
  2. 字符串模糊搜索: key = "valu*" , 查询的是分词之后模糊匹配的结果。
  3. 数值比较: num_field > 1, 支持的比较运算符包括> >= = < <=。
  4. 逻辑运算: and or not。例如 a = "x" and b ="y" 或 a = "x" and not b ="y"
  5. 如果使用全文索引搜索,需要使用特殊的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连接

image

使用DavaV连接展示日志服务

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

1. 创建数据源

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

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

image.png

2. 创建视图

image.png

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

image

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

3. 预览视图并发布

image.png

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

image

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
8月前
|
监控 安全 搜索推荐
使用EventLog Analyzer进行日志取证分析
EventLog Analyzer助力企业通过集中采集、归档与分析系统日志及syslog,快速构建“数字犯罪现场”,精准追溯安全事件根源。其强大搜索功能可秒级定位入侵时间、人员与路径,生成合规与取证报表,确保日志安全防篡改,大幅提升调查效率,为执法提供有力证据支持。
316 0
|
10月前
|
监控 安全 NoSQL
【DevOps】Logstash详解:高效日志管理与分析工具
Logstash是ELK Stack核心组件之一,具备强大的日志收集、处理与转发能力。它支持多种数据来源,提供灵活的过滤、转换机制,并可通过插件扩展功能,广泛应用于系统日志分析、性能优化及安全合规等领域,是现代日志管理的关键工具。
1495 0
|
11月前
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
自然语言处理 监控 安全
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
阿里云可观测官方发布了Observable MCP Server,提供了一系列访问阿里云可观测各产品的工具能力,包含阿里云日志服务SLS、阿里云应用实时监控服务ARMS等,支持用户通过自然语言形式查询
1780 0
阿里云发布可观测MCP!支持自然语言查询和分析多模态日志
|
存储 运维 监控
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
SelectDB 实现日志高效存储与实时分析,完成任务可领取积分、餐具套装/水杯/帆布包!
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
934 118
|
存储 消息中间件 缓存
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
基于阿里云SelectDB,MiniMax构建了覆盖国内及海外业务的日志可观测中台,总体数据规模超过数PB,日均新增日志写入量达数百TB。系统在P95分位查询场景下的响应时间小于3秒,峰值时刻实现了超过10GB/s的读写吞吐。通过存算分离、高压缩比算法和单副本热缓存等技术手段,MiniMax在优化性能的同时显著降低了建设成本,计算资源用量降低40%,热数据存储用量降低50%,为未来业务的高速发展和技术演进奠定了坚实基础。
638 1
MiniMax GenAI 可观测性分析 :基于阿里云 SelectDB 构建 PB 级别日志系统
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1177 55
|
监控 Java 应用服务中间件
Tomcat log日志解析
理解和解析Tomcat日志文件对于诊断和解决Web应用中的问题至关重要。通过分析 `catalina.out`、`localhost.log`、`localhost_access_log.*.txt`、`manager.log`和 `host-manager.log`等日志文件,可以快速定位和解决问题,确保Tomcat服务器的稳定运行。掌握这些日志解析技巧,可以显著提高运维和开发效率。
1634 13

相关产品

  • 日志服务