@thinkingai/ae-cli 1.0.30 → 6.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{auth-U25QJU5D.js → auth-DYC2BGLM.js} +2 -3
- package/dist/{auth-H3GJD55A.js → auth-GHBMJ5ZR.js} +33 -17
- package/dist/{chunk-CLJF7MQA.js → chunk-2DUEAXV3.js} +1 -1
- package/dist/{chunk-SF3KTPIC.js → chunk-5OC7CYCG.js} +2 -2
- package/dist/{chunk-SRJIAOBN.js → chunk-6W4QOZAL.js} +10 -0
- package/dist/{chunk-I42JGQ2J.js → chunk-BJX3GXWC.js} +3 -5
- package/dist/{chunk-GLNZSDKO.js → chunk-DMMEPCST.js} +4 -6
- package/dist/{chunk-VJFUB3H3.js → chunk-I5CRVM2S.js} +3 -3
- package/dist/{chunk-GSJGPNKK.js → chunk-PN3OS34E.js} +1 -1
- package/dist/{chunk-JM34JPCO.js → chunk-RSHMZ3LG.js} +178 -4
- package/dist/{client-IN42F223.js → client-2UJ63MVQ.js} +3 -4
- package/dist/{config-64G36TJL.js → config-NCUGK6NS.js} +3 -3
- package/dist/index.js +2526 -28
- package/dist/{model-VZCYNIOG.js → model-SJSOZTRS.js} +2 -2
- package/dist/{raw-WJIWC6YP.js → raw-7NVWSVJP.js} +5 -7
- package/dist/{sync-NVASAISS.js → sync-GRVO4K3U.js} +3 -3
- package/dist/{te-agent-YV4DXEXK.js → te-agent-KZRIEN4N.js} +468 -46
- package/dist/{te-analysis-CB3DA5I5.js → te-analysis-VAR4KUOK.js} +144 -29
- package/dist/{te-audience-W7SCQFC7.js → te-audience-KMKYI2YJ.js} +22 -15
- package/dist/{te-common-FBXVWBSI.js → te-common-WNCZB7R7.js} +4 -5
- package/dist/{te-community-LNVDZSGW.js → te-community-JEEFXPB3.js} +10 -11
- package/dist/{te-dataops-IPCSSWYH.js → te-dataops-GD3XBYCS.js} +11 -12
- package/dist/{te-engage-KARARMIR.js → te-engage-4XHCTS6I.js} +4 -5
- package/dist/{te-kb-2Z2CARN3.js → te-kb-B62KFP2A.js} +96 -8
- package/dist/{te-meta-PDKLMWXN.js → te-meta-EPZGQN56.js} +9 -10
- package/dist/{te-team-SW5B7DHO.js → te-team-YY24VORI.js} +6 -7
- package/dist/tracking/i18n/resources/cli/en.json +153 -0
- package/dist/tracking/i18n/resources/cli/ja.json +153 -0
- package/dist/tracking/i18n/resources/cli/ko.json +153 -0
- package/dist/tracking/i18n/resources/cli/zh.json +153 -0
- package/package.json +9 -3
- package/skills/ae-agent/SKILL.md +65 -25
- package/skills/ae-analysis/SKILL.md +108 -8
- package/skills/ae-analysis/references/cancel_query.md +39 -0
- package/skills/ae-analysis/references/drilldown_user_events.md +4 -2
- package/skills/ae-analysis/references/drilldown_users.md +4 -2
- package/skills/ae-analysis/references/get_bi_panel_detail.md +35 -0
- package/skills/ae-analysis/references/list_alerts.md +1 -1
- package/skills/ae-analysis/references/list_bi_panels.md +35 -0
- package/skills/ae-analysis/references/list_cluster_members.md +4 -1
- package/skills/ae-analysis/references/list_dashboards.md +1 -1
- package/skills/ae-analysis/references/list_entities.md +1 -1
- package/skills/ae-analysis/references/list_events.md +1 -1
- package/skills/ae-analysis/references/list_metrics.md +1 -1
- package/skills/ae-analysis/references/list_project_mark_times.md +1 -1
- package/skills/ae-analysis/references/list_properties.md +1 -1
- package/skills/ae-analysis/references/list_public_access_links.md +1 -1
- package/skills/ae-analysis/references/list_reports.md +1 -1
- package/skills/ae-analysis/references/list_tag_members.md +4 -1
- package/skills/ae-analysis/references/query_adhoc.md +6 -5
- package/skills/ae-analysis/references/query_bi_panel_data.md +58 -0
- package/skills/ae-analysis/references/query_dashboard_report_data.md +4 -1
- package/skills/ae-analysis/references/query_entity_details.md +5 -2
- package/skills/ae-analysis/references/query_event_details.md +4 -1
- package/skills/ae-analysis/references/query_report_data.md +2 -2
- package/skills/ae-analysis-global/SKILL.md +3 -1
- package/skills/ae-analysis-intent/SKILL.md +132 -0
- package/skills/ae-data-integration-helper/SKILL.md +242 -0
- package/skills/ae-data-integration-helper/references/android_sdk_faq.md +179 -0
- package/skills/ae-data-integration-helper/references/c_sdk_compilation.md +83 -0
- package/skills/ae-data-integration-helper/references/c_sdk_faq.md +416 -0
- package/skills/ae-data-integration-helper/references/cocoscreator_sdk_faq.md +123 -0
- package/skills/ae-data-integration-helper/references/cpp_server_sdk_faq.md +365 -0
- package/skills/ae-data-integration-helper/references/index.md +56 -0
- package/skills/ae-data-integration-helper/references/ios_sdk_faq.md +118 -0
- package/skills/ae-data-integration-helper/references/java_sdk_faq.md +406 -0
- package/skills/ae-data-integration-helper/references/javascript_sdk_faq.md +129 -0
- package/skills/ae-data-integration-helper/references/logbus2_guide.md +309 -0
- package/skills/ae-data-integration-helper/references/logbus2_parser_plugin.md +348 -0
- package/skills/ae-data-integration-helper/references/minigame_sdk_faq.md +115 -0
- package/skills/ae-data-integration-helper/references/miniprogram_sdk_faq.md +118 -0
- package/skills/ae-data-integration-helper/references/python_sdk_faq.md +232 -0
- package/skills/ae-data-integration-helper/references/restful_api_notes.md +74 -0
- package/skills/ae-data-integration-helper/references/sdk_log_guide.md +316 -0
- package/skills/ae-data-integration-helper/references/sdk_usage_notes.md +107 -0
- package/skills/ae-data-integration-helper/references/unity_sdk_faq.md +115 -0
- package/skills/ae-generate-tracking-code/SKILL.md +629 -0
- package/skills/ae-generate-tracking-code/references/autotrack-enum.md +183 -0
- package/skills/ae-generate-tracking-code/references/client-sdk-insert.md +202 -0
- package/skills/ae-generate-tracking-code/references/datax-config.md +43 -0
- package/skills/ae-generate-tracking-code/references/debug-script.md +102 -0
- package/skills/ae-generate-tracking-code/references/logbus-config.md +200 -0
- package/skills/ae-generate-tracking-code/references/modes.md +83 -0
- package/skills/ae-generate-tracking-code/references/restful-call.md +36 -0
- package/skills/ae-generate-tracking-code/references/sdk-index.md +128 -0
- package/skills/ae-generate-tracking-code/references/server-sdk-insert.md +206 -0
- package/skills/ae-generate-tracking-code/references/snippet-delivery.md +394 -0
- package/skills/ae-generate-tracking-code/references/te-api.md +181 -0
- package/skills/ae-generate-tracking-plan/SKILL.md +1083 -0
- package/skills/ae-generate-tracking-plan/references/autotrack-events.md +273 -0
- package/skills/ae-generate-tracking-plan/references/business-dimension-mapping.md +425 -0
- package/skills/ae-generate-tracking-plan/references/te-api.md +100 -0
- package/skills/ae-generate-tracking-plan/references/xlsx-schema.md +152 -0
- package/skills/ae-kb/SKILL.md +38 -5
- package/tracking-plan-template/MMO/346/211/213/346/270/270/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +104 -0
- package/tracking-plan-template/MMO/346/211/213/346/270/270/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template/MMO/351/241/265/346/270/270/345/237/213/347/202/271/346/250/241/346/235/277_v2.md +117 -0
- package/tracking-plan-template/MMO/351/241/265/346/270/270/345/237/213/347/202/271/346/250/241/346/235/277_v2.xlsx +0 -0
- package/tracking-plan-template/RPG/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +72 -0
- package/tracking-plan-template/RPG/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template/SLG/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +86 -0
- package/tracking-plan-template/SLG/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template/Slots/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +80 -0
- package/tracking-plan-template/Slots/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template/TE /345/237/213/347/202/271/347/244/272/344/276/213/346/250/241/346/235/277.md" +40 -0
- package/tracking-plan-template/TE /345/237/213/347/202/271/347/244/272/344/276/213/346/250/241/346/235/277.xlsx +0 -0
- package/tracking-plan-template/TE/345/256/230/346/226/271/346/250/241/346/235/277_dataTrackSample.md +40 -0
- package/tracking-plan-template/TE/345/256/230/346/226/271/346/250/241/346/235/277_dataTrackSample.xlsx +0 -0
- package/tracking-plan-template//344/274/221/351/227/262/345/205/273/346/210/220/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v2.md +92 -0
- package/tracking-plan-template//344/274/221/351/227/262/345/205/273/346/210/220/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v2.xlsx +0 -0
- package/tracking-plan-template//345/215/241/347/211/214/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +119 -0
- package/tracking-plan-template//345/215/241/347/211/214/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//345/241/224/351/230/262/345/205/273/346/210/220/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_V1.md +130 -0
- package/tracking-plan-template//345/241/224/351/230/262/345/205/273/346/210/220/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_V1.xlsx +0 -0
- package/tracking-plan-template//345/276/256/344/277/241/345/260/217/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +52 -0
- package/tracking-plan-template//345/276/256/344/277/241/345/260/217/346/270/270/346/210/217/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//346/215/225/351/261/274/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +68 -0
- package/tracking-plan-template//346/215/225/351/261/274/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//346/224/276/347/275/256/347/261/273/345/215/241/347/211/214/346/270/270/346/210/217_/345/237/213/347/202/271/346/250/241/347/211/210v1.md +108 -0
- package/tracking-plan-template//346/224/276/347/275/256/347/261/273/345/215/241/347/211/214/346/270/270/346/210/217_/345/237/213/347/202/271/346/250/241/347/211/210v1.xlsx +0 -0
- package/tracking-plan-template//346/224/276/347/275/256/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +119 -0
- package/tracking-plan-template//346/224/276/347/275/256/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//346/243/213/347/211/214/347/261/273/357/274/210/346/226/227/345/234/260/344/270/273/357/274/211/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +63 -0
- package/tracking-plan-template//346/243/213/347/211/214/347/261/273/357/274/210/346/226/227/345/234/260/344/270/273/357/274/211/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//346/243/213/347/211/214/347/261/273/357/274/210/351/272/273/345/260/206/357/274/211/345/237/213/347/202/271/346/250/241/346/235/277_v2.md +101 -0
- package/tracking-plan-template//346/243/213/347/211/214/347/261/273/357/274/210/351/272/273/345/260/206/357/274/211/345/237/213/347/202/271/346/250/241/346/235/277_v2.xlsx +0 -0
- package/tracking-plan-template//347/224/265/345/225/206/345/237/213/347/202/271/346/226/271/346/241/210/346/250/241/346/235/277_v1.md +84 -0
- package/tracking-plan-template//347/224/265/345/225/206/345/237/213/347/202/271/346/226/271/346/241/210/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//347/237/255/345/211/247/344/272/247/345/223/201/345/237/213/347/202/271/346/226/271/346/241/210/346/250/241/346/235/277_v1.md +79 -0
- package/tracking-plan-template//347/237/255/345/211/247/344/272/247/345/223/201/345/237/213/347/202/271/346/226/271/346/241/210/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//347/244/276/344/272/244/350/201/212/345/244/251/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +105 -0
- package/tracking-plan-template//347/244/276/344/272/244/350/201/212/345/244/251/347/261/273/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/tracking-plan-template//351/230/205/350/257/273/347/261/273APP/345/237/213/347/202/271/346/250/241/346/235/277_v1.md +83 -0
- package/tracking-plan-template//351/230/205/350/257/273/347/261/273APP/345/237/213/347/202/271/346/250/241/346/235/277_v1.xlsx +0 -0
- package/wiki/te-docs/index.md +225 -0
- package/wiki/te-docs/raw/advanced-data-type/first-event-check.md +66 -0
- package/wiki/te-docs/raw/advanced-data-type/updated-event.md +87 -0
- package/wiki/te-docs/raw/advanced-data-type.md +16 -0
- package/wiki/te-docs/raw/data-ingestion-guide/about-gdpr.md +55 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/automatic-event-tracking.md +431 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/debugging-and-logging.md +49 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/multi-instance.md +66 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/preset-properties.md +466 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced/third-party-integration.md +127 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/android-advanced.md +513 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/compliance.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android/release-notes.md +177 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android.md +228 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c/c-advanced.md +419 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c/release-notes.md +45 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/c.md +110 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/client-side-sdk-faq.md +52 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp/cpp-advanced.md +366 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp/release-notes.md +103 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cpp.md +201 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/compliance.md +26 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/automatically-track-events.md +117 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/debugging-and-logging.md +47 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/preset-properties.md +52 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced.md +267 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter/release-notes.md +82 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/flutter.md +139 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/compliance.md +26 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/automatically-track-events.md +121 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/debugging-and-logging.md +54 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/preset-properties.md +18 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced.md +305 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native/release-notes.md +79 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/react-native.md +137 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/release-notes.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/automatically-track-events.md +54 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/debugging-and-logging.md +53 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/multi-instance.md +42 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/preset-properties.md +119 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced/support-native.md +81 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app/uniapp-advanced.md +331 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform/uni-app.md +156 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/cross-platform.md +12 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/automatic-event-tracking.md +29 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/debugging-and-logging.md +47 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/multi-instance.md +21 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/preset-properties.md +249 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced.md +301 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/compliance.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x/release-notes.md +51 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocos2d-x.md +281 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/automatic-event-tracking.md +70 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/debugging-and-logging.md +57 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/native-support.md +104 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/preset-properties.md +91 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance.md +374 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/compliance.md +35 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator/release-notes.md +109 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/cocoscreator.md +170 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/compliance.md +28 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/automatic-event-tracking.md +29 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/debugging-and-logging.md +58 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced/preset-properties.md +43 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/corona-advanced.md +204 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona/release-notes.md +29 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/corona.md +269 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/compliance.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/release-notes.md +177 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/automatic-event-tracking.md +119 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/debugging-and-logging.md +47 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/multi-instance.md +50 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/native-pluggable.md +43 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/preset-properties.md +212 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/third-party-integration.md +77 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced.md +396 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity.md +176 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/compliance.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/release-notes.md +81 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/automatic-event-tracking.md +79 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/debugging-and-logging.md +31 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/preset-properties.md +25 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/third-party-integrations.md +141 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced.md +278 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unreal.md +190 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine.md +14 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/h5-and-app-sdk-connection.md +147 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/instant-app-and-game.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/compliance.md +24 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/automatic-event-tracking.md +272 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/debugging-and-logging.md +77 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/multi-instance.md +142 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/preset-properties.md +484 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced/third-party-integrations.md +132 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/ios-advanced.md +682 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios/release-notes.md +163 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios.md +304 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/compliance.md +29 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/automatic-event-tracking.md +136 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/debugging-and-logging.md +48 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/multi-instance.md +50 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced/preset-properties.md +132 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/javascript-advanced.md +462 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript/release-notes.md +107 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript.md +208 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced/debugging-and-logging.md +62 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced/preset-properties.md +118 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos/macos-advanced.md +556 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk/macos.md +231 -0
- package/wiki/te-docs/raw/data-ingestion-guide/client-sdk.md +25 -0
- package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/filebeat-logstash-user-guide.md +610 -0
- package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/logbus2-user-guide.md +1215 -0
- package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/ta-datax-writer-plugin-user-guide.md +278 -0
- package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools.md +15 -0
- package/wiki/te-docs/raw/data-ingestion-guide/privacy-policy.md +38 -0
- package/wiki/te-docs/raw/data-ingestion-guide/restful-api-user-guide.md +155 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging-FM9Cwz.md +37 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging-RSyfw7.md +41 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging.md +89 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties-OxzWw.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties-VuE3wr.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced-IauKwI.md +175 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced-YAilwk.md +210 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/c-advanced.md +211 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes-PVazwa.md +62 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes-TADbwY.md +50 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c/release-notes.md +69 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c-V2W3wv.md +131 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c-Zf9Jwl.md +179 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c.md +189 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced/debugging-and-logging.md +38 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/erlang-advanced.md +113 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang/release-notes.md +34 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/erlang.md +155 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced/debugging-and-logging.md +42 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/golang-advanced.md +157 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang/release-notes.md +72 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang.md +148 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced/debugging-and-logging.md +49 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/java-advanced.md +223 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java/release-notes.md +88 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java.md +174 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced/debugging-and-logging.md +46 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/lua-advanced.md +182 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua/release-notes.md +61 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/lua.md +121 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced/debugging-and-logging.md +55 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/nodejs-advanced.md +225 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs/release-notes.md +45 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs.md +141 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced/debugging-and-logging.md +41 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/php-advanced.md +216 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php/release-notes.md +45 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php.md +173 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced/debugging-and-logging.md +40 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/python-advanced.md +206 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python/release-notes.md +51 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python.md +116 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/release-notes.md +44 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced/debugging-and-logging.md +47 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced/preset-properties.md +126 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby/ruby-advanced.md +189 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk/ruby.md +142 -0
- package/wiki/te-docs/raw/data-ingestion-guide/server-sdk.md +22 -0
- package/wiki/te-docs/raw/data-ingestion-guide/thinkingdata-privacy-policy.md +37 -0
- package/wiki/te-docs/raw/data-ingestion-guide.md +48 -0
- package/wiki/te-docs/raw/preparations-before-data-ingestion/data-rules.md +396 -0
- package/wiki/te-docs/raw/preparations-before-data-ingestion/preset-properties-and-system-fields.md +957 -0
- package/wiki/te-docs/raw/preparations-before-data-ingestion/user-identification-rules.md +723 -0
- package/wiki/te-docs/raw/preparations-before-data-ingestion.md +203 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//345/220/210/350/247/204/346/214/207/345/215/227.md +96 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//346/233/264/346/226/260/346/227/245/345/277/227.md +97 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +52 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +48 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +447 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227.md +370 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk/openharmony.md +172 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//345/220/210/350/247/204/346/214/207/345/215/227.md +37 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//346/233/264/346/226/260/346/227/245/345/277/227.md +209 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +71 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +49 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +125 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +498 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227.md +612 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217.md +373 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//345/220/210/350/247/204/346/214/207/345/215/227.md +26 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//346/233/264/346/226/260/346/227/245/345/277/227.md +32 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +48 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +30 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +61 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227.md +236 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua.md +200 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//346/233/264/346/226/260/346/227/245/345/277/227.md +83 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +66 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +54 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +62 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +358 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227.md +615 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret.md +166 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//346/233/264/346/226/260/346/227/245/345/277/227.md +87 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +71 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +54 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +61 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +406 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227.md +597 -0
- package/wiki/te-docs/raw//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair.md +179 -0
- package/wiki/te-docs/schema.md +16 -0
- package/wiki/te-docs/synthesis/batch-ingest-comparison.md +324 -0
- package/wiki/te-docs/synthesis/js-sdk-cheatsheet.md +538 -0
- package/wiki/te-docs/synthesis/restful-api-reference.md +363 -0
- package/wiki/te-docs/synthesis/sdk-selection.md +372 -0
- package/wiki/te-docs/synthesis/server-sdk-overview.md +449 -0
- package/dist/chunk-U6TKB3IV.js +0 -171
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
# LogBus2 Usage Guide
|
|
2
|
+
|
|
3
|
+
> **Terminology**: 日志同步工具 = log sync tool | 数据格式转换 = data format conversion | 数据源 = data source | 磁盘空间 = disk space | 本地磁盘队列 = local disk queue | Kafka = Kafka message queue | 文件存放目录 = file storage directory | 传输速度 = transfer speed | 内存占用 = memory usage | 数据分流 = data routing (to multiple projects) | 神策数据 = Sensors Analytics data format | CPU 限制 = CPU limit | 带宽占用 = bandwidth usage | 网络条件 = network conditions | 磁盘 IO = disk IO | 监听文件 = watched/monitored files | 重试 = retry | 断点续传 = resume from breakpoint | 数据校验 = data validation | 黑名单 = blacklist (filter out events/properties) | 白名单 = whitelist (filter in events/properties) | 字段过滤 = field filtering | 数据脱敏 = data masking
|
|
4
|
+
|
|
5
|
+
## 一、简介
|
|
6
|
+
|
|
7
|
+
LogBus2 是数数科技在原 LogBus 基础上,使用 Go 语言重新开发的日志同步工具。相比 LogBus1,具有以下优势:
|
|
8
|
+
|
|
9
|
+
- **内存占用更低**:减少至原先的五分之一(约 100-200M)
|
|
10
|
+
- **传输速度更快**:提升至 3-5万条/秒
|
|
11
|
+
- **运行更稳定**:logbus1在一些特殊场景下,文件缓存区修复难度较高
|
|
12
|
+
- **部署更简单**:无需 JDK 环境,直接运行
|
|
13
|
+
|
|
14
|
+
## 二、使用前准备
|
|
15
|
+
|
|
16
|
+
1. **数据格式转换**:将需要传输的数据转换成 TE 的数据格式,支持 TA 格式和神策格式
|
|
17
|
+
2. **确定数据源**:确定文件存放目录或 Kafka 地址与 topic
|
|
18
|
+
3. **磁盘空间**:相比 LogBus1,LogBus2 去掉了本地磁盘队列,磁盘占用更小
|
|
19
|
+
|
|
20
|
+
## 三、应用场景
|
|
21
|
+
|
|
22
|
+
- 使用数数服务端 SDK 中 LogConsumer 模式的用户
|
|
23
|
+
- 对数据准确性及维度要求较高的场景
|
|
24
|
+
- 需要传输大批量历史数据
|
|
25
|
+
- 需要数据分流到多个项目的场景
|
|
26
|
+
- 需要对接神策数据的场景
|
|
27
|
+
|
|
28
|
+
## 四、性能指标
|
|
29
|
+
|
|
30
|
+
| 指标 | 说明 |
|
|
31
|
+
|------|------|
|
|
32
|
+
| 传输速度 | 3-5万条/秒(单个LogBus) |
|
|
33
|
+
| 内存占用 | 约 100-200M |
|
|
34
|
+
| CPU 限制 | 支持 cpu_limit 配置 |
|
|
35
|
+
| 带宽占用 | 峰值约 70Mbps |
|
|
36
|
+
|
|
37
|
+
> 传输效率受网络条件、磁盘 IO、系统分配资源、监听文件数量等因素影响。
|
|
38
|
+
|
|
39
|
+
## 五、支持环境
|
|
40
|
+
|
|
41
|
+
| 操作系统 | 架构 | 说明 |
|
|
42
|
+
|----------|------|------|
|
|
43
|
+
| Linux | amd64 | 推荐 |
|
|
44
|
+
| Linux | arm64 | 支持 |
|
|
45
|
+
| Windows | amd64 | 支持 |
|
|
46
|
+
| macOS | amd64 | 支持 |
|
|
47
|
+
| Docker | - | 宿主机持久化 |
|
|
48
|
+
| K8S | - | 支持 Helm 部署 |
|
|
49
|
+
|
|
50
|
+
下载地址:[官网下载](https://docs-v2.thinkingdata.cn/?version=latest&code=logbus2_installation&lan=en-US)
|
|
51
|
+
|
|
52
|
+
## 六、配置指南
|
|
53
|
+
|
|
54
|
+
### 文件数据源配置
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"push_url": "http://RECEIVER_URL",
|
|
59
|
+
"cpu_limit": 4,
|
|
60
|
+
"datasource": [
|
|
61
|
+
{
|
|
62
|
+
"type": "file",
|
|
63
|
+
"file_patterns": ["/data/log/*.log"],
|
|
64
|
+
"app_id": "your_app_id",
|
|
65
|
+
"http_compress": "gzip",
|
|
66
|
+
"unit_remove": "day",
|
|
67
|
+
"offset_remove": 7
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Kafka 数据源配置
|
|
74
|
+
|
|
75
|
+
```json
|
|
76
|
+
{
|
|
77
|
+
"datasource": [
|
|
78
|
+
{
|
|
79
|
+
"type": "kafka",
|
|
80
|
+
"topic": "topic1,topic2",
|
|
81
|
+
"consumer_group": "consumer_group_name",
|
|
82
|
+
"brokers": ["localhost:9092"],
|
|
83
|
+
"auto_commit": false,
|
|
84
|
+
"app_id": "your_app_id"
|
|
85
|
+
}
|
|
86
|
+
],
|
|
87
|
+
"push_url": "http://RECEIVER_URL"
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 多项目数据分流配置
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"datasource": [
|
|
96
|
+
{
|
|
97
|
+
"file_patterns": ["/data/log/*.log"],
|
|
98
|
+
"app_id": "default_app_id",
|
|
99
|
+
"app_pipe": {
|
|
100
|
+
"attribute": "#lib_version",
|
|
101
|
+
"id_map": {
|
|
102
|
+
"app_id_1": "1.0.0",
|
|
103
|
+
"app_id_2": "2.0.0"
|
|
104
|
+
},
|
|
105
|
+
"default": "app_id_1"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"push_url": "http://RECEIVER_URL"
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 告警配置
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"alert": {
|
|
118
|
+
"enabled": true,
|
|
119
|
+
"receiver": "feishu_robot",
|
|
120
|
+
"extra": "logbus_instance_1",
|
|
121
|
+
"out_cfg": {
|
|
122
|
+
"feishu_robot_hook": "https://open.feishu.cn/open-apis/bot/v2/hook/xxx"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## 七、常用操作命令
|
|
129
|
+
|
|
130
|
+
### 环境检查
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
./logbus env
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 启动服务
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
./logbus start
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 停止服务
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
./logbus stop
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 查看同步进度
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
./logbus progress
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 升级版本
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
./logbus stop
|
|
158
|
+
./logbus update
|
|
159
|
+
./logbus start
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### 查看传输速度
|
|
163
|
+
|
|
164
|
+
查看 `logbus/log/transporter.log` 确认发送效率。
|
|
165
|
+
|
|
166
|
+
## 八、配置参数详解
|
|
167
|
+
|
|
168
|
+
### 全局配置
|
|
169
|
+
|
|
170
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
171
|
+
|------|------|--------|------|
|
|
172
|
+
| push_url | string | - | Receiver 地址,必填 |
|
|
173
|
+
| cpu_limit | int | - | CPU 核心限制 |
|
|
174
|
+
| ignore_app_id_verify | bool | false | 是否跳过 appid 和 push_url 校验 |
|
|
175
|
+
|
|
176
|
+
### 数据上报配置
|
|
177
|
+
|
|
178
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
179
|
+
|------|------|--------|------|
|
|
180
|
+
| batch | int | 1000 | 数据发送条数条件,最小10,最大100000 |
|
|
181
|
+
| interval_seconds | int | 2 | 数据发送时间间隔,最大60秒 |
|
|
182
|
+
| send_thread_num | int | 3 | 数据上报线程数 |
|
|
183
|
+
| http_timeout | string | 30s | HTTP 请求超时时间 |
|
|
184
|
+
| http_compress | string | - | HTTP 压缩协议,支持 gzip/snappy |
|
|
185
|
+
|
|
186
|
+
### 文件数据源配置
|
|
187
|
+
|
|
188
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
189
|
+
|------|------|--------|------|
|
|
190
|
+
| file_patterns | []string | - | 文件 glob 匹配模式,必填 |
|
|
191
|
+
| traverse_dir_interval | string | 30s | 扫描目录间隔时间 |
|
|
192
|
+
|
|
193
|
+
### Kafka 数据源配置
|
|
194
|
+
|
|
195
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
196
|
+
|------|------|--------|------|
|
|
197
|
+
| topic | string | - | Kafka topic,支持多 topic(逗号分隔) |
|
|
198
|
+
| brokers | []string | - | Kafka broker 地址 |
|
|
199
|
+
| consumer_group | string | - | 消费者组 |
|
|
200
|
+
| auto_commit | bool | false | 是否自动提交 |
|
|
201
|
+
| protocol | string | none | 认证协议:plain/scramsha256/scramsha512/iam/none |
|
|
202
|
+
| fetch_count | int | 1000 | 一次性拉取数据条数 |
|
|
203
|
+
|
|
204
|
+
### 文件删除配置
|
|
205
|
+
|
|
206
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
207
|
+
|------|------|--------|------|
|
|
208
|
+
| offset_remove | int | - | 删除周期 |
|
|
209
|
+
| unit_remove | string | d | 删除单位:d(天)/h(小时) |
|
|
210
|
+
| RemoveDirs | bool | false | 是否删除文件夹,不建议配置,可能导致服务端写入异常 |
|
|
211
|
+
|
|
212
|
+
## 九、注意事项
|
|
213
|
+
|
|
214
|
+
### 文件操作相关
|
|
215
|
+
|
|
216
|
+
> **禁止对 LogBus 监听的文件进行重命名操作**,否则会导致数据丢失或数据重复。
|
|
217
|
+
|
|
218
|
+
### 监听文件要求
|
|
219
|
+
|
|
220
|
+
- LogBus 监听路径下文件必须是纯净的数据文件
|
|
221
|
+
- 不能有 gz/.iso/.rpm/.zip/.bz/.rar/.bz2 后缀的文件
|
|
222
|
+
- LogBus-v2 默认会绕过这些文件
|
|
223
|
+
|
|
224
|
+
### 多实例运行
|
|
225
|
+
|
|
226
|
+
- 可运行多个 LogBus,但多个 LogBus 不能监听相同路径下的文件上报到同一个项目
|
|
227
|
+
|
|
228
|
+
### Kafka 消费优化
|
|
229
|
+
|
|
230
|
+
- 消费者线程数建议与分区数相等
|
|
231
|
+
- 避免单个 LogBus 消费 hash 模余结果一致的分区
|
|
232
|
+
- 可通过增加分区数和 LogBus 消费者数来加快消费
|
|
233
|
+
|
|
234
|
+
### 数据补报注意事项
|
|
235
|
+
|
|
236
|
+
- 如果是历史数据,建议开启历史通道
|
|
237
|
+
- 及时关注 Kafka 集群是否有数据积压
|
|
238
|
+
- 补数据建议发送到单独的 topic,避免与正式数据混淆
|
|
239
|
+
|
|
240
|
+
## 十、常见问题
|
|
241
|
+
|
|
242
|
+
### 如何确认网络是否通畅?
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
curl 数据接收地址/health-check
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### 如何确认 APPID 是否正确?
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
curl "数据接收地址/check_appid?appid=目标APPID"
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
返回 `{"code":0}` 即为正常。
|
|
255
|
+
|
|
256
|
+
### 数据重复的原因?
|
|
257
|
+
|
|
258
|
+
1. 是否对已同步完成的文件进行重命名
|
|
259
|
+
2. 源数据文件中数据是否有重复
|
|
260
|
+
3. 是否执行了 reset 操作
|
|
261
|
+
|
|
262
|
+
### 传输较慢怎么办?
|
|
263
|
+
|
|
264
|
+
1. 调大 `send_thread_num` 发送线程数
|
|
265
|
+
2. 开启 HTTP 压缩:`http_compress: "gzip"`
|
|
266
|
+
3. 检查网络延迟、带宽,建议 LogBus 与 Receiver 在同一内网
|
|
267
|
+
4. 检查是否有限制 CPU、内存
|
|
268
|
+
|
|
269
|
+
### Kafka 消费较慢怎么办?
|
|
270
|
+
|
|
271
|
+
1. 增加 LogBus 实例
|
|
272
|
+
2. 调大单个 LogBus 的 `send_thread_num`
|
|
273
|
+
3. 增加分区数
|
|
274
|
+
4. 最佳策略:LogBus 消费者线程数 = 分区数
|
|
275
|
+
|
|
276
|
+
### 读取策略差异导致上报延迟?
|
|
277
|
+
|
|
278
|
+
如果服务端数据存在多进程同时写入数据到不同文件的情况,logbus2老版本会出现串行读取的情况,导致部分实时写入的文件没有实时上报,新版本已兼容此场景。
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
# 停止 LogBus
|
|
282
|
+
./logbus stop
|
|
283
|
+
|
|
284
|
+
# 升级 LogBus
|
|
285
|
+
./logbus update
|
|
286
|
+
|
|
287
|
+
# 重启 LogBus
|
|
288
|
+
./logbus start
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## 十一、最佳实践建议
|
|
292
|
+
|
|
293
|
+
### 部署建议
|
|
294
|
+
|
|
295
|
+
1. **资源规划**:根据数据量合理配置 CPU 和内存
|
|
296
|
+
2. **网络优化**:LogBus 与 Receiver 部署在同一内网
|
|
297
|
+
3. **监控告警**:配置告警通知,及时发现异常
|
|
298
|
+
|
|
299
|
+
### 配置建议
|
|
300
|
+
|
|
301
|
+
1. **压缩传输**:建议开启 gzip 压缩,减少网络传输量
|
|
302
|
+
2. **文件清理**:配置自动删除策略,避免磁盘空间不足
|
|
303
|
+
3. **线程配置**:根据数据量调整发送线程数
|
|
304
|
+
|
|
305
|
+
### 运维建议
|
|
306
|
+
|
|
307
|
+
1. **版本升级**:定期关注发版记录,及时升级
|
|
308
|
+
2. **日志留存**:合理配置日志留存时间
|
|
309
|
+
3. **进程监控**:对 LogBus 进程进行监控
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
# LogBus2 Data Parser Plugin
|
|
2
|
+
|
|
3
|
+
> **Terminology**: 数据转译插件 = data parser/translation plugin | 自定义数据解析器 = custom data parser | 数据格式转换 = data format conversion | gRPC 插件 = gRPC plugin | 批量处理 = batch processing | 分隔符 = separator / delimiter | 拼接 = concatenate | proto 文件 = .proto file (Protocol Buffers) | 告警功能 = alerting | 无限重试 = infinite retry | 错误数据 = malformed/error data | 标准 TA 格式 = standard ThinkingAnalytics data format
|
|
4
|
+
|
|
5
|
+
> Logbus2 from version 2.1.0.0 supports custom data parsers for converting source data formats that differ from the TE data format. This is equivalent to Logbus1's Custom Interceptor feature.
|
|
6
|
+
|
|
7
|
+
## 一、准备工作
|
|
8
|
+
|
|
9
|
+
### 数据格式
|
|
10
|
+
|
|
11
|
+
1. gRPC插件服务端接收数据进行批量处理,多条数据以Logbus2配置参数 parser.separator(默认 :: )拼接
|
|
12
|
+
2. 单条数据则拼接文件名称或者Kafka的topic名称,以配置参数 parser.index_separator(默认 |ta| )拼接
|
|
13
|
+
|
|
14
|
+
示例:
|
|
15
|
+
|
|
16
|
+
```python
|
|
17
|
+
# 文件名称为:event.log
|
|
18
|
+
# 原始数据2条:
|
|
19
|
+
{"user_id": "abc", "distinct_id": "123"}
|
|
20
|
+
{"user_id": "def", "distinct_id": "456"}
|
|
21
|
+
|
|
22
|
+
# gRPC插件服务端接收到的数据为:
|
|
23
|
+
event.log|ta|{"user_id": "abc", "distinct_id": "123"} ::event.log|ta|{"user_id": "def", "distinct_id": "456"}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
gRPC插件服务端返回数据格式,以parser.separator拼接转换为标准ta格式的数据:
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
# 返回数据应为:
|
|
30
|
+
{"#account_id": "abc", "#distinct_id": "123"}::{\"#account_id\": \"def\", \"distinct_id\": \"456\"}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
错误处理:
|
|
34
|
+
- 返回非正确json数据,则主程序会跳过错误行
|
|
35
|
+
- 返回非标准ta数据,则数据上报会产生错误
|
|
36
|
+
- 返回第二个参数为error,则会进行无限重试,防止错误数据进入te集群。可搭配告警功能,提前预知错误信息。
|
|
37
|
+
|
|
38
|
+
### proto文件
|
|
39
|
+
|
|
40
|
+
parser.proto 文件用于生成各语言的 gRPC 服务端代码。
|
|
41
|
+
|
|
42
|
+
### Java
|
|
43
|
+
|
|
44
|
+
1. JDK 8+ (Logbus部署环境和开发环境保持一致)、Maven
|
|
45
|
+
2. 下载 protobuf 编译工具:https://github.com/protocolbuffers/protobuf/releases
|
|
46
|
+
3. 下载 grpc-java 编译工具:https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-java/
|
|
47
|
+
|
|
48
|
+
编译步骤:
|
|
49
|
+
|
|
50
|
+
```shell
|
|
51
|
+
# 生成ParserGrpc.java文件
|
|
52
|
+
protoc --plugin=protoc-gen-grpc-java=protoc-gen-grpc-java-1.51.0-osx-aarch_64.exe --grpc-java_out=/ta/path/ -I=/ta/path/ /ta/path/parser.proto
|
|
53
|
+
|
|
54
|
+
# 生成ParserOuterClass.java文件
|
|
55
|
+
protoc --experimental_allow_proto3_optional -I /ta/path/ --java_out=/ta/path/ /ta/path/parser.proto
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Python
|
|
59
|
+
|
|
60
|
+
1. Python3.6+
|
|
61
|
+
2. 安装三方库:
|
|
62
|
+
|
|
63
|
+
```shell
|
|
64
|
+
pip3 install grpcio-tools==1.48.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
|
|
65
|
+
pip3 install grpcio-health-checking==1.48.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
编译步骤:
|
|
69
|
+
|
|
70
|
+
```shell
|
|
71
|
+
python -m grpc_tools.protoc -I /ta/path/ --python_out=/ta/path/ --grpc_python_out=/ta/path/ /ta/path/parser.proto
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 二、gRPC服务端开发
|
|
75
|
+
|
|
76
|
+
### Java版本(所需版本JDK 8+)
|
|
77
|
+
|
|
78
|
+
Maven依赖:
|
|
79
|
+
|
|
80
|
+
```xml
|
|
81
|
+
<dependencies>
|
|
82
|
+
<dependency>
|
|
83
|
+
<groupId>com.google.protobuf</groupId>
|
|
84
|
+
<artifactId>protobuf-java</artifactId>
|
|
85
|
+
<version>3.19.4</version>
|
|
86
|
+
</dependency>
|
|
87
|
+
<dependency>
|
|
88
|
+
<groupId>io.grpc</groupId>
|
|
89
|
+
<artifactId>grpc-all</artifactId>
|
|
90
|
+
<version>1.51.0</version>
|
|
91
|
+
</dependency>
|
|
92
|
+
</dependencies>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
开发转译逻辑demo:
|
|
96
|
+
|
|
97
|
+
```java
|
|
98
|
+
package org.interceptor.logbus2.service;
|
|
99
|
+
|
|
100
|
+
import org.interceptor.logbus2.proto.ParserGrpc;
|
|
101
|
+
import org.interceptor.logbus2.proto.ParserOuterClass;
|
|
102
|
+
import com.google.protobuf.ByteString;
|
|
103
|
+
import io.grpc.Server;
|
|
104
|
+
import io.grpc.ServerBuilder;
|
|
105
|
+
import io.grpc.stub.StreamObserver;
|
|
106
|
+
import java.util.*;
|
|
107
|
+
|
|
108
|
+
public class Demo extends ParserGrpc.ParserImplBase {
|
|
109
|
+
|
|
110
|
+
// 对应logbus2参数parser.separator,多条数据之间自定义的分隔符,默认 ::
|
|
111
|
+
private static final String separator = ":ta:";
|
|
112
|
+
|
|
113
|
+
// 对应logbus2参数parser.index_separator,单条数据,索引与数据之间的分隔符,默认 |ta|
|
|
114
|
+
private static final String indexSeparator = "\\|ta\\|";
|
|
115
|
+
|
|
116
|
+
// 对应logbus2参数parser.batch_separator,用于数据一条转多条的分隔符,默认 0x01
|
|
117
|
+
private static final String batchSeparator = new String(new byte[]{0x01}, StandardCharsets.UTF_8);
|
|
118
|
+
|
|
119
|
+
public static String parseData(final String rawData) {
|
|
120
|
+
try {
|
|
121
|
+
// 处理逻辑:将接收到的数据中的test字符转为product,并将数据增加为3条返回
|
|
122
|
+
String parseData = JSON.toJSONString(JSON.parseObject(rawData.replaceAll("test", "product"), TaDataDo.class));
|
|
123
|
+
return parseData + batchSeparator + parseData + batchSeparator + parseData;
|
|
124
|
+
} catch (Exception e) {
|
|
125
|
+
e.printStackTrace();
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
@Override
|
|
131
|
+
public void parse(ParserOuterClass.Request request, StreamObserver<ParserOuterClass.Response> responseObserver) {
|
|
132
|
+
String content = request.getContent().toStringUtf8();
|
|
133
|
+
String[] datas = content.split(separator);
|
|
134
|
+
List<String> responseList = new ArrayList<>();
|
|
135
|
+
|
|
136
|
+
for (String data : datas) {
|
|
137
|
+
try {
|
|
138
|
+
String[] split = data.split(indexSeparator);
|
|
139
|
+
responseList.add(parseData(split[1]));
|
|
140
|
+
} catch (Exception e) {
|
|
141
|
+
responseList.add("{}");
|
|
142
|
+
e.printStackTrace();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
String join = String.join(separator, responseList);
|
|
146
|
+
|
|
147
|
+
ParserOuterClass.Response response = ParserOuterClass.Response.newBuilder().setContent(ByteString.copyFrom(join.getBytes())).build();
|
|
148
|
+
responseObserver.onNext(response);
|
|
149
|
+
responseObserver.onCompleted();
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
public static void main(String[] args) throws InterruptedException {
|
|
153
|
+
int availablePort = RandomUtils.nextInt(10000, 12000);
|
|
154
|
+
Server server = null;
|
|
155
|
+
for (int i = availablePort; i < 60000; i++) {
|
|
156
|
+
try {
|
|
157
|
+
server = ServerBuilder.forPort(i)
|
|
158
|
+
.maxInboundMessageSize(100 * 1024 * 1024)
|
|
159
|
+
.addService(new Demo())
|
|
160
|
+
.build()
|
|
161
|
+
.start();
|
|
162
|
+
break;
|
|
163
|
+
} catch (IOException e) {
|
|
164
|
+
// Port unavailable, try the next one
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
assert server != null;
|
|
168
|
+
// ‼️重要:此行输出信息供logbus获取,格式不能变动
|
|
169
|
+
System.out.println("1|1|tcp|127.0.0.1:" + server.getPort() + "|grpc");
|
|
170
|
+
server.awaitTermination();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Python版本
|
|
176
|
+
|
|
177
|
+
```python
|
|
178
|
+
import random
|
|
179
|
+
from concurrent import futures
|
|
180
|
+
import socket
|
|
181
|
+
import sys
|
|
182
|
+
import json
|
|
183
|
+
import grpc
|
|
184
|
+
import parser_pb2
|
|
185
|
+
import parser_pb2_grpc
|
|
186
|
+
from grpc_health.v1.health import HealthServicer
|
|
187
|
+
from grpc_health.v1 import health_pb2, health_pb2_grpc
|
|
188
|
+
|
|
189
|
+
separator = ":ta:"
|
|
190
|
+
index_separator = "|ta|"
|
|
191
|
+
|
|
192
|
+
class ParserServicer(parser_pb2_grpc.ParserServicer):
|
|
193
|
+
def Parse(self, request, context):
|
|
194
|
+
data = request.content
|
|
195
|
+
result = parser_pb2.Response()
|
|
196
|
+
data_list = data.decode('utf-8').split(separator)
|
|
197
|
+
return_data_list = []
|
|
198
|
+
for data in data_list:
|
|
199
|
+
try:
|
|
200
|
+
raw_data_list = data.replace('\r\n', '').split(index_separator)
|
|
201
|
+
parse_data = json.loads(raw_data_list[1])
|
|
202
|
+
new_parse_data = {}
|
|
203
|
+
new_parse_data["properties"] = parse_data.copy()
|
|
204
|
+
new_parse_data["#account_id"] = parse_data["ACCOUNTID"]
|
|
205
|
+
new_parse_data["#distinct_id"] = parse_data["OSTYPE"]
|
|
206
|
+
new_parse_data["#type"] = "track"
|
|
207
|
+
new_parse_data["#ip"] = parse_data["IP"]
|
|
208
|
+
new_parse_data["#uuid"] = parse_data["UID"]
|
|
209
|
+
new_parse_data["#time"] = parse_data["LOGTM"]
|
|
210
|
+
new_parse_data["#event_name"] = "event_" + str(parse_data["CODE"])
|
|
211
|
+
return_data_list.append(json.dumps(new_parse_data))
|
|
212
|
+
except Exception as ve:
|
|
213
|
+
return_data_list.append('{}')
|
|
214
|
+
result.content = separator.join(return_data_list).encode('utf-8')
|
|
215
|
+
return result
|
|
216
|
+
|
|
217
|
+
def serve():
|
|
218
|
+
health = HealthServicer()
|
|
219
|
+
health.set("plugin", health_pb2.HealthCheckResponse.ServingStatus.Value('SERVING'))
|
|
220
|
+
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10), options=[
|
|
221
|
+
('grpc.max_send_message_length', 4 * 1024 * 1024),
|
|
222
|
+
('grpc.max_receive_message_length', 4 * 1024 * 1024),
|
|
223
|
+
])
|
|
224
|
+
parser_pb2_grpc.add_ParserServicer_to_server(ParserServicer(), server)
|
|
225
|
+
health_pb2_grpc.add_HealthServicer_to_server(health, server)
|
|
226
|
+
port = get_open_port_in_random_range()
|
|
227
|
+
server.add_insecure_port(f'127.0.0.1:{port}')
|
|
228
|
+
server.start()
|
|
229
|
+
try:
|
|
230
|
+
# ‼️重要:此行输出信息供logbus获取,格式不能变动
|
|
231
|
+
print(f'1|1|tcp|127.0.0.1:{port}|grpc')
|
|
232
|
+
sys.stdout.flush()
|
|
233
|
+
while True:
|
|
234
|
+
time.sleep(60*60*24)
|
|
235
|
+
except KeyboardInterrupt:
|
|
236
|
+
server.stop(0)
|
|
237
|
+
|
|
238
|
+
if __name__ == '__main__':
|
|
239
|
+
serve()
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## 三、本地gRPC调试
|
|
243
|
+
|
|
244
|
+
创建本地调试 gRPC 客户端,服务端启动后再启动客户端发送消息。
|
|
245
|
+
|
|
246
|
+
### Java客户端
|
|
247
|
+
|
|
248
|
+
```java
|
|
249
|
+
public class ProtoClient {
|
|
250
|
+
private static final String indexSeparator = "|ta|";
|
|
251
|
+
|
|
252
|
+
public static void main(String[] args) {
|
|
253
|
+
String event = "{\"#type\":\"track\",\"#time\":\"2023-09-05 18:58:17.021\",\"#event_name\":\"test\",\"#account_id\":\"test\",\"properties\":{\"#lib\":\"tga_python_sdk\"}}";
|
|
254
|
+
|
|
255
|
+
ManagedChannel channel = ManagedChannelBuilder.forAddress("127.0.0.1", 12345)
|
|
256
|
+
.usePlaintext()
|
|
257
|
+
.build();
|
|
258
|
+
ParserGrpc.ParserBlockingStub stub = ParserGrpc.newBlockingStub(channel);
|
|
259
|
+
ParserOuterClass.Request request = ParserOuterClass.Request.newBuilder()
|
|
260
|
+
.setContent(ByteString.copyFrom(("ta.log"+ indexSeparator + event).getBytes()))
|
|
261
|
+
.build();
|
|
262
|
+
|
|
263
|
+
try {
|
|
264
|
+
ParserOuterClass.Response response = stub.parse(request);
|
|
265
|
+
System.out.println("Server Response: " + response.getContent().toStringUtf8());
|
|
266
|
+
} catch (Exception e) {
|
|
267
|
+
e.printStackTrace();
|
|
268
|
+
} finally {
|
|
269
|
+
channel.shutdown();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
### Python客户端
|
|
276
|
+
|
|
277
|
+
```python
|
|
278
|
+
import grpc
|
|
279
|
+
import parser_pb2
|
|
280
|
+
import parser_pb2_grpc
|
|
281
|
+
|
|
282
|
+
def send_grpc_request():
|
|
283
|
+
channel = grpc.insecure_channel('127.0.0.1:12345')
|
|
284
|
+
stub = parser_pb2_grpc.ParserStub(channel)
|
|
285
|
+
event = '{"#type":"track","#time":"2023-09-04 16:46:06.055","#event_name":"test","#distinct_id":"test"}'
|
|
286
|
+
request = parser_pb2.Request(content=f'1.log|ta|{event}'.encode('utf-8'))
|
|
287
|
+
response = stub.Parse(request)
|
|
288
|
+
print("Response received:", response.content)
|
|
289
|
+
|
|
290
|
+
if __name__ == '__main__':
|
|
291
|
+
send_grpc_request()
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
## 四、配置
|
|
295
|
+
|
|
296
|
+
### Logbus2配置文件
|
|
297
|
+
|
|
298
|
+
```json
|
|
299
|
+
{
|
|
300
|
+
"datasource": [
|
|
301
|
+
{
|
|
302
|
+
"file_patterns": ["/path/server_log/*log"],
|
|
303
|
+
"app_id": "debug-appid",
|
|
304
|
+
"parser": {
|
|
305
|
+
"cmd": "java -jar /path/lib/xxx.jar",
|
|
306
|
+
"depend_sh": "true",
|
|
307
|
+
"separator": ":ta:",
|
|
308
|
+
"hand_shake": {
|
|
309
|
+
"protocol_version": 1,
|
|
310
|
+
"magic_cookie_key": "LogBus",
|
|
311
|
+
"magic_cookie_value": "v2"
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
],
|
|
316
|
+
"push_url": "http://push_url"
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
> 注:注释部分启动前要去除
|
|
321
|
+
|
|
322
|
+
## 五、FAQ
|
|
323
|
+
|
|
324
|
+
1. **启动时报错:Unrecongnized remote plugin message......latest protocol**
|
|
325
|
+
|
|
326
|
+
原因:程序使用的proto生成文件非最新,Logbus客户端校验失败
|
|
327
|
+
|
|
328
|
+
解决:参考准备工作部分,重新根据proto文件生成java类或python文件
|
|
329
|
+
|
|
330
|
+
2. **日志中报错:Parser return data is invalid: length is changed**
|
|
331
|
+
|
|
332
|
+
原因:目前版本Logbus2转译插件会校验数据转译前后条数是否相同,如果不同会导致校验失败
|
|
333
|
+
|
|
334
|
+
解决:确认转译前后数据条数是否相同,如果需要一转多功能,请使用parser.batch_separator进行数据拼接
|
|
335
|
+
|
|
336
|
+
3. **Logbus日志中报错:rpc error: code = Canceled desc = stream terminated by RST_STREAM with error code: CANCEL**
|
|
337
|
+
|
|
338
|
+
同时Java程序报错:io.grpc.StatusRuntimeException: RESOURCE_EXHAUSTED: gRPC message exceeds maximum size
|
|
339
|
+
|
|
340
|
+
原因:转译程序设置的传输数据字节数过小,导致logbus和Java转移程序RPC通信传输数据失败
|
|
341
|
+
|
|
342
|
+
解决:增加程序中的最大传输字节数,Java设置:maxInboundMessageSize(100*1024*1024)
|
|
343
|
+
|
|
344
|
+
4. **启动时报错:plugin [parser] start failed: fork/exec /bin/sh: bad file descriptor**
|
|
345
|
+
|
|
346
|
+
原因:由于插件编译器兼容性问题当前无法在mac环境运行
|
|
347
|
+
|
|
348
|
+
解决:需在linux / windows环境运行
|