すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:LogstoreをMySQLデータベースに関連付けてクエリと分析を実行する

最終更新日:Aug 26, 2024

このトピックでは、LogstoreをMySQLデータベースに関連付けてクエリと分析を実行する方法について説明します。 このトピックでは、ゲーム会社のログを例として使用します。

前提条件

背景情報

会社Aは、ユーザゲームログおよびユーザメタデータのデータタイプを有するゲーム会社である。 Simple Log Serviceは、ユーザーのゲームログをリアルタイムで収集できます。 ユーザーゲームログには、操作、ターゲット、ヘルスポイント (HP) 、マジックポイント (MP) 、ネットワーク、支払い方法、クリック場所、ステータスコード、ユーザーIDなどのイベント情報が含まれます。 ユーザメタデータは、性別、登録時間、地域などのユーザ情報を含む。 メタデータはログに表示できないため、ほとんどの場合、ユーザーメタデータはデータベースに保存されます。 会社Aは、最適な運用計画を取得するために、ユーザゲームログとユーザメタデータとの関連分析を実行することを望んでいる。

Simple Log Serviceのクエリおよび分析エンジンを使用すると、Logstoreを外部ストアに関連付けてクエリおよび分析を実行できます。 外部ストアには、MySQLデータベースとObject Storage Service (OSS) バケットが含まれます。 ユーザーのプロパティに関連するメトリックを分析するには、SQL JOIN構文を使用してユーザーのゲームログをユーザーメタデータに関連付けることができます。 分析結果を外部ストアに書き込み、結果を処理することもできます。背景信息

手順

  1. 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
  2. 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ブロックからのアクセスを許可するようにセキュリティグループルールを設定します。 詳細については、「セキュリティグループルールの追加」をご参照ください。

  3. 外部ストアを作成します。

    1. Simple Log Service CLIをインストールします。 詳細については、「Simple Log Service CLIの概要」をご参照ください。

    2. という名前の構成ファイルを作成します。/home/config.json.

    3. 次のスクリプトを /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データベースで使用するテーブルの名前。

    4. 外部ストアを作成します。

      project_nameの値を、使用するプロジェクトの名前に置き換えます。

      aliyunlog log create_external_store --project_name="log-rds-demo" --config="file:///home/config.json" 
    5. 外部ストアに関する情報を照会します。

      作成コマンドが正常に実行された場合、応答は返されません。 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"
      }
  4. SQL JOIN構文を使用して、関連付けのクエリと分析を実行します。

    1. にログインします。Simple Log Serviceコンソール.

    2. [プロジェクト] セクションで、管理するプロジェクトをクリックします。

    3. On theログストレージ > ログストアタブで、管理するLogstoreをクリックします。

    4. クエリ文を実行します。

      ログの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
  5. クエリと分析結果をMySQLデータベースに保存します。

    1. MySQLデータベースにreportという名前のデータテーブルを作成して、1分あたりのページビュー (PV) 数を格納します。

      CREATE TABLE `report` ( 
        `minute` bigint(20) DEFAULT NULL, 
        `pv` bigint(20) DEFAULT NULL 
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    2. レポートテーブルの外部ストアを作成します。 詳細については、「手順3」をご参照ください。

    3. Logstoreのクエリと分析ページで、次のクエリステートメントを実行して結果をレポートテーブルに保存します。 sls_report_storeは、外部ストアの名前を示します。

      * | insert into sls_report_store select __time__- __time__ % 300 as min, count(1) as pv group by min

      結果が保存された後、MySQLデータベースで結果を表示できます。SQL结果