Log Serviceでは、JOIN構文を使用してLogstoreおよびMySQLデータベースからデータを照会できます。 クエリ結果はデータベースに保存されます。
始める前に
An外部店作成されます。 詳細については、「外部 MySQL ストレージ」をご参照ください。手順
- Log Service コンソールにログインします。
- [プロジェクト] セクションで、表示するプロジェクト名をクリックします。
- を選択します。 [Logstore] タブで、表示する Logstore をクリックします。
- クエリ文を実行します。 Log Serviceは次のJOIN構文をサポートしています。
[INNER ] JOIN 左 [外] JOIN RIGHT [ OUTER ] JOIN FULL [ OUTER ] JOIN
次のサンプルコードは、結合クエリの例を示しています。 詳細については、「LogstoreをMySQLデータベースに関連付けてクエリと分析を実行する」をご参照ください。メソッド: postlogstorelogs | select count(1) , histogram(logstore) from log l join join_meta m on l.projectid = cast( m.ikey as varchar)
重要- JOIN構文は、LogstoreとMySQLデータベースの小さなテーブルでのみ使用できます。 小さなテーブルには20 MB未満のデータが含まれています。
- クエリステートメントでは、Logstoreの名前がjoinキーワードの前にあり、外部ストアの名前がjoinキーワードの後にある必要があります。
- クエリ文で外部ストアの名前を指定する必要があります。 システムがステートメントを実行すると、名前がデータベース名とテーブル名の組み合わせに置き換えられます。 テーブル名のみを入力しないでください。
- クエリ結果をMySQLデータベースに保存します。 Log Service使用する挿入クエリ結果を使用してデータベースにinsert声明。 The以下サンプルコードの例を提供INSERTステートメント:
メソッド: postlogstorelogs | method_output select cast (varchar(65535) としてメソッド) に挿入し、メソッドごとにロググループからカウント (1)
サンプルPythonスクリプト
# エンコーディング: utf-8
から__将来__輸入print_function
aliyunから。ログ輸入 *
aliyunから。ログ。util輸入base64_encodestring
ランダムから輸入randint
輸入時間
輸入os
datetimeから輸入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"
クライアント=LogClient (エンドポイント、accessKeyId、accessKey、トークン)
# 外部ストレージを作成
解像度=クライアント。create_external_store (プロジェクト、ExternalStoreConfig("rds_store" 、"地域" 、"rds-vpc" 、"vpc id" 、"Instance ID" 、"Instance IPアドレス" 、"Instanceポート" 、"Username" 、"Password" 、"Database名" 、"Table名")) 。
res.log_print()
# 外部ストアに関する詳細を取得します。
res = client.get_external_store(project,"rds_store");
res.log_print()
res = client.list_external_store(project,"");
res.log_print();
# Execute参加クエリ。
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();