このトピックでは、LogstoreをMySQLデータベースに関連付けてクエリと分析を実行する方法について説明します。 このトピックでは、ゲーム会社のログを例として使用します。
前提条件
ログは収集され、Logstoreに保存されます。 詳細については、「データ収集の概要」をご参照ください。
ログのフィールドにインデックスが作成されます。 詳細については、「インデックスの作成」をご参照ください。
MySQLデータベースが利用可能です。 詳細については、「ApsaraDB RDS For MySQLインスタンスのデータベースとアカウントの作成」をご参照ください。
背景情報
会社Aは、ユーザゲームログおよびユーザメタデータのデータタイプを有するゲーム会社である。 Simple Log Serviceは、ユーザーのゲームログをリアルタイムで収集できます。 ユーザーゲームログには、操作、ターゲット、ヘルスポイント (HP) 、マジックポイント (MP) 、ネットワーク、支払い方法、クリック場所、ステータスコード、ユーザーIDなどのイベント情報が含まれます。 ユーザメタデータは、性別、登録時間、地域などのユーザ情報を含む。 メタデータはログに表示できないため、ほとんどの場合、ユーザーメタデータはデータベースに保存されます。 会社Aは、最適な運用計画を取得するために、ユーザゲームログとユーザメタデータとの関連分析を実行することを望んでいる。
Simple Log Serviceのクエリおよび分析エンジンを使用すると、Logstoreを外部ストアに関連付けてクエリおよび分析を実行できます。 外部ストアには、MySQLデータベースとObject Storage Service (OSS) バケットが含まれます。 ユーザーのプロパティに関連するメトリックを分析するには、SQL JOIN構文を使用してユーザーのゲームログをユーザーメタデータに関連付けることができます。 分析結果を外部ストアに書き込み、結果を処理することもできます。
手順
MySQLデータベースにユーザープロパティテーブルを作成します。
join_metaという名前のデータテーブルを作成して、ユーザーID、ユーザー名、性別、年齢、アカウント残高、登録時間、および登録リージョンを格納します。
CREATE TABLE `join_meta` ( `uid` int(11) NOT NULL DEFAULT '0', `user_nick` text, `gender` tinyint(1) DEFAULT NULL, `age` int(11) DEFAULT NULL, `register_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `balance` float DEFAULT NULL, `region` text, PRIMARY KEY (`uid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
MySQLデータベースのホワイトリストを作成します。
RDSインスタンスに作成されたMySQLデータベースを使用する場合は、次のCIDRブロックをホワイトリストに追加します: 100.104.0.0/16、11.194.0.0/16、および11.201.0.0/16。 詳細については、「IPアドレスホワイトリストの設定」をご参照ください。
VPCタイプのECSインスタンスでホストされている自己管理型MySQLデータベースを使用し、ECSインスタンスがセキュリティグループに追加されている場合、100.104.0.0/16、11.194.0.0/16、11.201.0.0/16のCIDRブロックからのアクセスを許可するようにセキュリティグループルールを設定します。 詳細については、「セキュリティグループルールの追加」をご参照ください。
外部ストアを作成します。
Simple Log Service CLIをインストールします。 詳細については、「Simple Log Service CLIの概要」をご参照ください。
という名前の構成ファイルを作成します。/home/config.json.
次のスクリプトを /home/config.jsonファイルに追加します。 ビジネス要件に基づいてパラメーター値を置き換えます。
{ "externalStoreName":"sls_join_meta_store", "storeType":"rds-vpc", "parameter":{ "region":"cn-qingdao", "vpc-id":"vpc-m5eq4irc1pucp*******", "host":"localhost", "port":"3306", "username":"user", "password":"****", "db":"scmc", "table":"join_meta" } }
パラメーター
説明
externalStoreName
外部ストアの名前。 名前は小文字である必要があります。
storeType
データソースのタイプ。 値をrds-vpcに設定します。
region
地域
RDSインスタンスに作成されたMySQLデータベースを使用する場合は、regionをRDSインスタンスが存在するリージョンに設定します。
VPCタイプのECSインスタンスでホストされている自己管理型MySQLデータベースを使用する場合は、ECSインスタンスが存在するリージョンにregionを設定します。
重要RDSインスタンスまたはECSインスタンスは、Simple Log Serviceプロジェクトと同じリージョンに存在する必要があります。
vpc-id
VPC の ID です。
VPCタイプのRDSインスタンスに作成されたMySQLデータベースを使用する場合は、vpc-idをRDSインスタンスが属するVPCのIDに設定します。
VPCタイプのAnalyticDBインスタンスに作成されたMySQLデータベースを使用する場合、AnalyticDBインスタンスが属するvpcのidにVPC-IDを設定します。
VPCタイプのECSインスタンスでホストされている自己管理型MySQLデータベースを使用する場合は、ECSインスタンスが属するvpcのidにVPC-IDを設定します。
MySQLデータベースにインターネット経由でアクセスできる場合は、vpc-idを設定する必要はありません。
ホスト
MySQLデータベースのアドレス。
VPCタイプのRDSインスタンスに作成されたMySQLデータベースを使用する場合は、hostを内部エンドポイントまたはRDSインスタンスのプライベートIPアドレスに設定します。
VPCタイプのAnalyticDBインスタンスに作成されたMySQLデータベースを使用する場合、hostをAnalyticDBインスタンスの内部エンドポイントまたはプライベートIPアドレスに設定します。
VPCタイプのECSインスタンスでホストされている自己管理型MySQLデータベースを使用する場合、hostをECSインスタンスのプライベートIPアドレスに設定します。
MySQLデータベースにインターネット経由でアクセスできる場合は、ホストをパブリックエンドポイントまたはデータベースのパブリックIPアドレスに設定します。
ポート
ポート番号
RDSインスタンスに作成されたMySQLデータベースを使用する場合は、portをRDSインスタンスのポートに設定します。
VPCタイプのECSインスタンスでホストされている自己管理型MySQLデータベースを使用する場合、portをECSインスタンスのMySQLサービスポートに設定します。
ユーザー名
MySQLデータベースへのログインに使用するアカウントのユーザー名。
パスワード
MySQLデータベースへのログインに使用するアカウントのパスワード。
db
MySQLデータベースの名前。
テーブル
MySQLデータベースで使用するテーブルの名前。
外部ストアを作成します。
project_nameの値を、使用するプロジェクトの名前に置き換えます。
aliyunlog log create_external_store --project_name="log-rds-demo" --config="file:///home/config.json"
外部ストアに関する情報を照会します。
作成コマンドが正常に実行された場合、応答は返されません。
aliyunlog log get_external_store -- project_name="log-rds-demo" -- store_name="sls_join_meta_store" -- format-output=json
コマンドを実行して、作成された外部データストアの詳細を照会します。 次の例では、外部データストアはRDSインスタンスに作成されたMySQLデータベースです。{ "externalStoreName": "sls_join_meta_store", "parameter": { "db": "scmc", "host": "rm-bp1******rm76.mysql.rds.aliyuncs.com", "instance-id": "", "port": "3306", "region": "cn-qingdao", "table": "join_meta", "timezone": "", "username": "user", "vpc-id": "vpc-m5eq4irc1pucp*******" }, "storeType": "rds-vpc" }
SQL JOIN構文を使用して、関連付けのクエリと分析を実行します。
にログインします。Simple Log Serviceコンソール.
[プロジェクト] セクションで、管理するプロジェクトをクリックします。
On the タブで、管理するLogstoreをクリックします。
クエリ文を実行します。
ログのuseridフィールドとクエリステートメントのデータベーステーブルのuidフィールドを指定します。
アクティブユーザーの分布を性別で分析します。
* | select case gender when 1 then 'Male' else 'Female' end as gender, count(1) as pv from log l join sls_join_meta_store u on l.userid = u.uid group by gender order by pv desc
による注文
さまざまなリージョンでのユーザーエンゲージメントを分析します。
* | select region , count(1) as pv from log l join sls_join_meta_store u on l.userid = u.uid group by region order by pv desc
による注文
性別によるユーザーの消費傾向を分析します。
* | select case gender when 1 then 'Male' else 'Female' end as gender, sum(money) as money from log l join sls_join_meta_store u on l.userid = u.uid group by gender order by money desc
クエリと分析結果をMySQLデータベースに保存します。
MySQLデータベースにreportという名前のデータテーブルを作成して、1分あたりのページビュー (PV) 数を格納します。
CREATE TABLE `report` ( `minute` bigint(20) DEFAULT NULL, `pv` bigint(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8
レポートテーブルの外部ストアを作成します。 詳細については、「手順3」をご参照ください。
Logstoreのクエリと分析ページで、次のクエリステートメントを実行して結果をレポートテーブルに保存します。 sls_report_storeは、外部ストアの名前を示します。
* | insert into sls_report_store select __time__- __time__ % 300 as min, count(1) as pv group by min
結果が保存された後、MySQLデータベースで結果を表示できます。