日志服务支持通过Join语法将Logstore和MySQL数据库进行联合查询,并把查询结果保存到MySQL数据库中。
前提条件
已创建ExternalStore。具体操作,请参见关联MySQL数据源。
操作步骤
- 登录日志服务控制台。
- 在Project列表区域,单击目标Project。
- 在日志存储 > 日志库页签中,单击目标Logstore。
- 执行查询分析语句。支持的Join语法有INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN。
[ INNER ] JOIN LEFT [ OUTER ] JOIN RIGHT [ OUTER ] JOIN FULL [ OUTER ] JOIN
JOIN语法样例如下所示。更多信息,请参见关联Logstore与MySQL数据库进行查询分析。
method:postlogstorelogs | select count(1) , histogram(logstore) from log l join join_meta m on l.projectid = cast( m.ikey as varchar)
注意- 仅支持Logstore与MySQL数据库小表(数据量小于20 MB)进行联合查询。
- 查询和分析语句中,Logstore必须写在join关键字前面,ExternalStore写在join关键字后面。
- 查询和分析语句中,必须写ExternalStore名称,系统自动替换成MySQL数据库名+表名。请勿直接填写MySQL表名。
- 保存查询结果到MySQL数据库中。日志服务支持通过Insert语法将查询结果插入到MySQL数据库中。Insert语法样例如下所示:
method:postlogstorelogs | insert into method_output select cast(method as varchar(65535)),count(1) from log group by method
Python程序样例
# encoding: utf-8
from __future__ import print_function
from aliyun.log import *
from aliyun.log.util import base64_encodestring
from random import randint
import time
import os
from datetime import datetime
endpoint = os.environ.get('ALIYUN_LOG_SAMPLE_ENDPOINT', 'cn-chengdu.log.aliyuncs.com')
accessKeyId = os.environ.get('ALIYUN_LOG_SAMPLE_ACCESSID', '')
accessKey = os.environ.get('ALIYUN_LOG_SAMPLE_ACCESSKEY', '')
logstore = os.environ.get('ALIYUN_LOG_SAMPLE_LOGSTORE', '')
project = "ali-yunlei-chengdu"
client = LogClient(endpoint, accessKeyId, accessKey, token)
#创建ExternalStore。
res = client.create_external_store(project,ExternalStoreConfig("rds_store","region","rds-vpc","vpc id","实例id","实例ip","实例端口","用户名","密码","数据库","数据库表"));
res.log_print()
#获取ExternalStore详情。
res = client.get_external_store(project,"rds_store");
res.log_print()
res = client.list_external_store(project,"");
res.log_print();
# JOIN查询。
req = GetLogsRequest(project,logstore,From,To,"","select count(1) from "+ logstore +" s join meta m on s.projectid = cast(m.ikey as varchar)");
res = client.get_logs(req)
res.log_print();
# 将查询和分析结果写入MySQL数据库。
req = GetLogsRequest(project,logstore,From,To,""," insert into rds_store select count(1) from "+ logstore );
res = client.get_logs(req)
res.log_print();
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:http://www.yunxiaoer.com/163777.html