データがさまざまな地域に分散しているシナリオは、ログ分析では一般的です。 このシナリオでは、ログとデータベースのデータの両方に基づいて、ユーザーデータの階層分析を実行する必要があります。 結果はデータベースに書き込まれ、レポートシステムを使用してクエリすることができます。 Logstore とデータベースの関連付けクエリが必要です。

このタスクについて

  • ユーザーログデータ: ゲームログを例にとると、クラシックゲームログには、operation、target、blood、mana、network、payment method、click location、status code、user ID などのプロパティが含まれます。
  • ユーザーメタデータ: ログは増分イベントを記録します。 ただし、性別、登録時間、リージョンなどの静的なユーザー情報は固定されており、クライアントで取得するのは困難です。 静的ユーザー情報はログに記録することができません。 静的ユーザー情報は、ユーザーメタデータと呼ばれます。
  • Logstore と ApsaraDB RDS for MySQL インスタンスの関連付け分析: Log Service のクエリと分析エンジンは、Logstore と ExternalStores の関連付けクエリと分析を実行することができます。 SQL JOIN 構文を使用してログとメタデータを関連付け、ユーザープロパティに関連するメトリックを分析することができます。 Log Service は、関連付けのクエリと分析のために ExternalStores を参照するだけでなく、ApsaraDB RDS for MySQL インスタンスなどの ExternalStores への結果の書き込みもサポートしています。 これにより、結果をさらに処理することができます。
    • Logstore: ログを収集、保存、クエリ、および分析することができます。
    • ExternalStore: データを ApsaraDB for RDS テーブルにマップします。 開発者は、ユーザー情報をテーブルに格納することができます。

手順

  1. ログを Log Service に収集します。
  2. ユーザープロパティテーブルを作成します。
    chiji_user という名前のテーブルを作成して、ID、ユーザー名、性別、口座残高、登録時間、省などのユーザープロパティを保存します。
    CREATE TABLE `chiji_user` ( 
      `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, 
      `province` text, PRIMARY KEY (`uid`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
  3. ExternalStore を作成します。
    1. ExternalStore を作成する前に、Alibaba Cloud Command Line Interface (CLI) をインストールします。
      pip install -U aliyun-log-cli
    2. プロジェクトを指定し、ExternalStore の設定ファイル /root/config.json を作成します。
      aliyunlog log create_external_store --project_name="log-rds-demo" --config="file:///root/config.json" 
    3. ExternalStore の名前とパラメーターを設定ファイルに設定します。 VPC の ApsaraDB for RDS インスタンスの場合は、vpc-id、instance-id、ホスト、ポート、ユーザー名、パスワード、db、テーブル、リージョンのパラメーターを設定する必要があります。
      { 
           "externalStoreName": "chiji_user", 
           "storeType": "rds-vpc", 
           "parameter": { 
           "vpc-id": "vpc-m5eq4irc1pucpk85f****", 
           "instance-id": "rm-m5ep2z57814qs****", 
           "host": "example.com", 
           "port": "3306", 
           "username": "testroot", 
           "password": "123456789", 
           "db": "chiji", 
           "table": "chiji_user", 
           "region": "cn-qingdao" 
        } 
      }
  4. 指定した IP アドレスをホワイトリストに追加します。
    • ApsaraDB for RDS インスタンスの場合は、IP アドレス 100.104.0.0/16 をインスタンスへのアクセスを許可された IP アドレスのホワイトリストに追加します。
    • ApsaraDB RDS for MySQL インスタンスの場合は、IP アドレスをセキュリティグループに追加します。
  5. 関連分析を実行します。
    • アクティブユーザーの性別分布を分析します。
      JOIN 構文を使用して、ログの userid フィールドと ApsaraDB for RDS インスタンスの uid フィールドの同じ値を通じてログとユーザープロパティを関連付けます。
      * | select case gender when 1 then 'male' else 'female' end as gender , count(1) as pv from log l join chiji_user u on l.userid = u.uid group by gender order by pv desc
    • 異なる省のユーザーの活動レベルを分析します。
      * | select province , count(1) as pv from log l join chiji_user u on l.userid = u.uid group by province order by pv desc
    • 性別の異なるユーザーの消費傾向を分析します。
      * | select case gender when 1 then 'male' else 'female' end as gender , sum(money) as money from log l join chiji_user u on l.userid = u.uid group by gender order by money desc
  6. 関連付けクエリと分析の結果を保存します。
    1. 1 分あたりのページビュー (PV) を格納する結果テーブルを作成します。
      CREATE TABLE `report` ( 
        `minute` bigint(20) DEFAULT NULL, 
        `pv` bigint(20) DEFAULT NULL 
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    2. ステップ 3 の指示に従ってレポートテーブルの ExternalStore を作成し、結果をテーブルに保存します。
      * | insert into report select __time__- __time__ % 300 as min, count(1) as pv group by min
      SQL 文の実行結果には、ApsaraDB for RDS インスタンスに書き込まれた行数が表示されます。 SQL 結果