このタスクについて

Log Service は、Logstore 内のログデータと RDS データベースのクエリ結合をサポートし、クエリ結果をRDS に保存します。

手順

  1. RDS VPC を作成し、ホワイトリストを設定します。
    1. RDS を作成し、VPC 環境を指定します。 作成が完了後、VPC ID と RDS インスタンス ID を取得します。
    2. RDS ホワイトリストに 100.104.0.0/16を設定します。
      詳細な手順については、 RDS ユーザーガイドホワイトリストの設定に関する章をご参照ください。
  2. External Store を作成します。
    次のステートメントで External Store を作成し、パラメータを実際のパラメータ値で置き換えます。
    {
    "externalStoreName":"storeName",
    "storeType":"rds-vpc",
    "parameter":
       {
       "region":"cn-qingdao",
       "vpc-id":"vpc-m5eq4irc1pucp*******"
       "instance-id":"i-m5eeo2whsn*******"
       "host":"localhost",
       "port":"3306",
       "username":"root",
       "password":"****",
       "db":"scmc"
       "table":"join_meta"
       }
    }
    表 1. 説明
    パラメータ 説明:
    region サービスを提供するリージョン。
    vpc-id VPC の ID。
    instance-id RDS インスタンス ID。
    host ECS インスタンス ID。
    port ECS インスタンスポート。
    username ユーザー名。
    password パスワード。
    db データベースの名前。
    table テーブル。
    現在は、北京(cn-beijing)、青島(cn-qingdao) および杭州 (cn-hangzhou) リージョンのみがサポートされています。
  3. JOIN をつかってクエリします。
    Log Service コンソールの クエリページで JOIN ステートメントを実行します。
    サポートされている JOIN 構文:
    • INNER JOIN
    • LEFT JOIN
    • RIGHT JOIN
    • FULL JOIN
    [ INNER ] JOIN
    LEFT [ OUTER ] JOIN
    RIGHT [ OUTER ] JOIN
    Full [outer] Join
    • JOIN 操作は、Logstore と小さいテーブルの結合のみサポートします。
    • JOIN の順序では、Logstore は前に、External Store は後に記述する必要があります。
    • External Store の名前は JOIN 文に記述する必要があります。 その名前を自動的に RDS データベースとテーブル名に置き換えることができます。
    JOIN 構文の例:
    Method: Maid | select count (1), histogram (logstore) from log l join join_meta m on L. projectid = cast (M. ikey as varchar)
  4. クエリ実行結果を RDS に保存します。
    Insert 構文を使用して RDS にクエリ結果を挿入できます。
    method:postlogstorelogs | insert into method_output select cast(methodasvarchar(65535)),count(1)fromloggroupbymethod

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. internon. Get ('aliyun _ Porter ','')
    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)
#Create external store
    res = client.create_external_store(project,ExternalStoreConfig("rds_store","region","rds-vpc","vpc id","instance id","instance ip","instance port","username","paassword","database","data table"));
    res.log_print()
    #Get external store details
    res = client.get_external_store(project,"rds_store");
    res.log_print();
    res = client.list_external_store(project,"");
    res.log_print();
    # JOIN query
    req = GetLogStoreLogsRequest(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();
     # Query results insert into RDS
    req = GetLogStoreLogsRequest(project,logstore,From,To,""," insert into rds_store select count(1) from "+ logstore );
    res = client.get_logs(req)
    res.log_print();