Lorsque vos données sont stockées à la fois dans un logstore Simple Log Service et dans une base de données ApsaraDB RDS for MySQL, utilisez la fonctionnalité de transformation de données de Simple Log Service pour accéder à la base de données via son endpoint interne et enrichir vos données.
Fonctionnement
Le schéma suivant illustre comment la transformation de données dans Simple Log Service accède à une base de données ApsaraDB RDS for MySQL pour l'enrichissement des données.
Présentation de la solution
Cette solution se déroule en trois étapes :
Obtention des paramètres avancés pour la tâche de transformation de données : Connectez-vous d'abord à la console ApsaraDB RDS pour récupérer les informations de l'instance ApsaraDB RDS for MySQL. Ensuite, utilisez OpenAPI Explorer pour appeler une opération API et obtenir les paramètres avancés.
Démarrage d'une tâche de transformation de données dans le logstore source : Configurez une règle de transformation de données pour enrichir les informations.
Enregistrement des résultats de la transformation dans le logstore de destination : Stockez les données enrichies dans un logstore de destination.
Prérequis
Le logstore source contient des données de journal brutes.
L'instance ApsaraDB RDS for MySQL et le projet Simple Log Service se trouvent dans la même région.
Étape 1 : Obtention des paramètres avancés
-
Connectez-vous à la console ApsaraDB RDS.
-
Configurez une liste d'autorisation (whitelist). Pour plus d'informations, reportez-vous à Configurer une liste d'autorisation.
Dans le volet de navigation de gauche, cliquez sur , saisissez un nom pour le groupe et définissez la liste d'autorisation IP sur
100.104.0.0/16.
Dans le volet de navigation de gauche, cliquez sur Instances. Localisez l'instance cible et cliquez sur son ID.
-
Récupérez l'ID de l'instance et le port interne.
Dans le volet de navigation de gauche, cliquez sur Basic Information. Sur la page Basic Information, localisez et copiez l'Instance ID.
Dans le volet de navigation de gauche, cliquez sur Database Connection. Sur la page Database Connection, localisez et copiez le Internal Port:.
-
Obtenez le
VpcIdet leVpcCloudInstanceIdde l'instance cible.Ouvrez la page OpenAPI Explorer. Sur la page , localisez la zone de texte Instance ID correspondant au paramètre DBInstanceId et saisissez l'ID de l'instance cible que vous avez copié précédemment. Pour plus d'informations sur cette opération API, reportez-vous à Interroger les détails de l'instance.
-
Cliquez sur Operations. Sur la page Invocation Result, copiez les valeurs
VpcIdetVpcCloudInstanceId."VSwitchId": "xxx", "TipsLevel": 0, "PayType": "Postpaid", "LockMode": "Unlock", "DeletionProtection": false, "DBInstanceStorageType": "general_essd", "InsId": 1, "VpcId": "xxx", "ConnectionMode": "Standard", "VpcCloudInstanceId": "xxx", "RegionId": "cn-hangzhou", "ConnectionString": "xxx", "ExpireTime": ""
Étape 2 : Démarrage d'une tâche de transformation de données
-
Connectez-vous à la console Simple Log Service.
-
Accédez à la page de transformation de données.
Dans la section Projets, cliquez sur le projet cible.
Sous l'onglet , cliquez sur le logstore cible.
Sur la page de requête et d'analyse, cliquez sur Data Transformation.
Sur la page de transformation de données, cliquez sur Switch to Data Transformation (Old Version).
-
Ajoutez les paramètres avancés.
Dans le coin supérieur droit de la page, sélectionnez Advanced et cliquez sur Preview Data.
-
Dans le panneau Add Preview Settings, cliquez sur Advanced Options et ajoutez les paramètres suivants.
ImportantPour tous les paramètres de configuration du tableau, la valeur
your_nameest personnalisable mais doit rester cohérente. Elle doit également correspondre à la valeuryour_nameutilisée dans les règles de traitement.Paramètre
Valeur
Description
config.vpc.vpc_id.your_name
vpc-uf6mskb0b****n9yj
L'ID VPC de l'instance cible.
Pour obtenir des instructions, consultez la section Obtenir le VpcId de l'instance cible.
config.vpc.instance_id.your_name
rm-uf6e61k****ahd7-2024091513
L'ID de l'instance cible.
Pour obtenir des instructions, consultez la section Obtenir le VpcCloudInstanceId de l'instance cible.
Pour une base de données MySQL auto-gérée située dans la même région Alibaba Cloud, utilisez le paramètre
config.vpc.instance_ip.your_namepour spécifier l'adresse IP de la base de données au sein du VPC.config.vpc.instance_port.your_name
3306
Le port interne de l'instance cible.
Pour obtenir des instructions, consultez la section Obtenir le port interne de l'instance cible.
Une fois les paramètres confirmés, cliquez sur OK.
-
Modifiez la règle de transformation.
-
Dans l'éditeur, ajoutez les instructions suivantes.
Le code ci-dessous fournit un exemple de syntaxe. Pour plus d'informations sur les fonctions d'enrichissement de données et les fonctions de ressource, reportez-vous aux rubriques Enrichir des données à l'aide de données provenant d'une base de données ApsaraDB RDS for MySQL et Fonctions de ressource.
/* e_table_map() Data enrichment function. res_rds_mysql() Pull function. Pulls table content or SQL execution results from an ApsaraDB RDS for MySQL database. str_format() String formatting function. The `your_name` in `res_local()` must match the `your_name` in the advanced parameter settings. field Matching field. The field used as the basis for matching log data in the logstore with data in the ApsaraDB RDS for MySQL table. A match is successful only when the value of this field is identical in both sources. output_fields Output fields. If a match is successful, the values of these fields are returned to generate a new log entry. */ e_table_map( res_rds_mysql( str_format("{}:{}", res_local("config.vpc.instance_id.your_name"), res_local("config.vpc.instance_port.your_name")), "database_username", "database_password", "database_name", table="table_name" ), "field", "output_fields" )La déclaration de transformation est la suivante :
La règle suivante fait correspondre le champ
process_time_in_msd'un logstore Simple Log Service avec le champprocess_time_in_msd'une table de base de données RDS MySQL. La correspondance réussit uniquement si les valeurs du champprocess_time_in_mssont identiques. Après une correspondance réussie, la règle récupère les champsmodeletpurchase_priceainsi que leurs valeurs depuis la table RDS MySQL, puis les combine avec les données du logstore pour générer de nouvelles données.e_table_map( res_rds_mysql( str_format("{}:{}", res_local("config.vpc.instance_id.test"), res_local("config.vpc.instance_port.test")), "xxx", "xxx","xxx xxx", "database", table="bicycles", primary_keys="process_time_in_ms"), "process_time_in_ms", ["model","purchase_price"] )
-
-
Consultez les Transformation Results.
Dans le tableau principal, les journaux sont routés vers la cible de sortie
__default__en conservant les paires clé-valeur d'origine telles queremote_addretrequest_method. Cela signifie que la règle de transformation n'a pas trouvé de correspondance pour ces journaux et qu'ils ont été envoyés vers la cible par défaut dans leur état initial.Un enregistrement de journal ayant trouvé une correspondance inclut des champs clés tels que
model(XTC 800),purchase_price(3000.00) etprocess_time_in_ms(788). L'entrée de journal complète est la suivante :__source__ :127.0.0.1 __tag__:__receive_time__ :1725962982 __tag__:_container_ip_ :183.227.33.184 __tag__:_container_name_ :container3 __tag__:_image_name_ :image3 __tag__:_path_ :/home/local __topic__ :tomcat_access_log body_bytes_sent :6344 model :XTC 800 process_time_in_ms :788 purchase_price :3000.00 referer :www.phn.mock.com remote_addr :202.92.0.182 remote_user :v-0 request_method :GET request_protocol :HTTP/2.0 request_uri :/request/path-3/file-1 status :200 time :10/Sep/2024:09:09:35 user_agent :Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.3 Safari/534.24Dans le coin supérieur droit, cliquez sur Preview Data pour traiter les données.
Étape 3 : Enregistrement des résultats de la transformation
-
Dans le coin inférieur droit, cliquez sur Save as Transformation Job (Old Version).
Dans la boîte de dialogue Create Data Transformation Job, saisissez d'abord un Job Name (préfixé par
etl-), un Display Name et une Job Description. Sélectionnez Default Role pour la Authorization Method. Ensuite, dans la section Storage Target, configurez le Target Name, la Target Region, le Target Project et le Target Logstore, puis sélectionnez Default Role pour l'autorisation. Enfin, dans la section Processing Scope (Data Reception Time), sélectionnez une plage horaire, telle que All, From a Specific Time ou Specific Time Range. -
Dans le volet de navigation de gauche, sous Logstores, cliquez sur le logstore de destination où les résultats de la transformation sont enregistrés. Dans le coin supérieur droit de la page, sélectionnez une plage horaire pour les données.
Après avoir sélectionné une plage horaire, vérifiez l'onglet Raw Logs pour vous assurer que les résultats de la transformation ont bien été enregistrés.
Les journaux traités contiennent désormais les nouveaux champs model (XTC 800) et purchase_price (3000.00). Cela confirme que les résultats de la transformation ont été écrits dans le logstore de destination.
Annexe : Accès à AnalyticDB et PolarDB for MySQL
Outre ApsaraDB RDS for MySQL, Simple Log Service prend également en charge l'accès aux bases de données AnalyticDB for MySQL et PolarDB for MySQL via leurs endpoints internes. Les configurations requises sont décrites ci-dessous :
-
Base de données AnalyticDB for MySQL
Lorsque vous configurez les Advanced Parameter Settings, définissez la valeur de config.vpc.instance_id.your_name sur l'ID de votre instance AnalyticDB for MySQL suivi de -controller. Pour les autres paramètres, reportez-vous à ce document.
Vous devez également définir
config.vpc.vpc_id.your_namesur l'ID VPC correspondant etconfig.vpc.instance_port.your_namesur3306. Pour PolarDB for MySQL, utilisez la même configuration que pour ApsaraDB RDS for MySQL.