@thinkingai/ae-cli 1.0.28 → 6.0.16-1
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/README.md +1 -16
- package/README.zh.md +1 -16
- package/dist/{auth-H2376DEF.js → auth-DYC2BGLM.js} +2 -2
- package/dist/{auth-5NSDQFQB.js → auth-GHBMJ5ZR.js} +31 -12
- package/dist/{chunk-CLJF7MQA.js → chunk-2DUEAXV3.js} +1 -1
- package/dist/chunk-5OC7CYCG.js +98 -0
- package/dist/{chunk-SRJIAOBN.js → chunk-6W4QOZAL.js} +10 -0
- package/dist/{chunk-LU7SXK4Q.js → chunk-BJX3GXWC.js} +2 -2
- package/dist/{chunk-WCHI7725.js → chunk-DMMEPCST.js} +47 -6
- package/dist/{chunk-IMBKVXKY.js → chunk-EGEIXA2Z.js} +82 -10
- package/dist/{chunk-AD5V3ZPJ.js → chunk-I5CRVM2S.js} +98 -10
- package/dist/chunk-NOO24N7W.js +11 -0
- package/dist/{chunk-GSJGPNKK.js → chunk-PN3OS34E.js} +1 -1
- package/dist/{chunk-CAQYQA4R.js → chunk-RSHMZ3LG.js} +15 -1
- package/dist/{client-FCMK3XEK.js → client-2UJ63MVQ.js} +3 -3
- package/dist/{config-64G36TJL.js → config-NCUGK6NS.js} +3 -3
- package/dist/index.js +2553 -29
- package/dist/{model-EZ6K7FXI.js → model-SJSOZTRS.js} +5 -7
- package/dist/{raw-VEF3D6UD.js → raw-7NVWSVJP.js} +4 -4
- package/dist/{sync-NRODEVNH.js → sync-GRVO4K3U.js} +120 -23
- package/dist/{te-agent-7U7JLJKU.js → te-agent-KZRIEN4N.js} +468 -47
- package/dist/{te-analysis-A2OSGHQ4.js → te-analysis-VAR4KUOK.js} +145 -28
- package/dist/{te-audience-LI67PPGO.js → te-audience-KMKYI2YJ.js} +23 -14
- package/dist/{te-common-35WVU3C5.js → te-common-WNCZB7R7.js} +5 -4
- package/dist/{te-community-LEAP6PWT.js → te-community-JEEFXPB3.js} +11 -10
- package/dist/{te-dataops-N2LGZBOX.js → te-dataops-GD3XBYCS.js} +33 -32
- package/dist/{te-engage-H7C72Z46.js → te-engage-4XHCTS6I.js} +5 -4
- package/dist/{te-kb-I2OKTBAI.js → te-kb-B62KFP2A.js} +97 -7
- package/dist/{te-meta-HBTIEDRO.js → te-meta-EPZGQN56.js} +10 -9
- package/dist/{te-team-EM5OWRQL.js → te-team-YY24VORI.js} +16 -12
- 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 +66 -26
- 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-KAEZTSXN.js +0 -99
- package/dist/chunk-OJDNO5QY.js +0 -63
package/wiki/te-docs/raw/data-ingestion-guide/data-import-tools/filebeat-logstash-user-guide.md
ADDED
|
@@ -0,0 +1,610 @@
|
|
|
1
|
+
---
|
|
2
|
+
code: filebeat_logstash_installation
|
|
3
|
+
name: "Filebeat + Logstash User Guide"
|
|
4
|
+
wikiToken: PX2xwuYOwiaSnOkWUjrcNm0lnGf
|
|
5
|
+
parentWikiToken: S9D7wPqKDiC6zhkvv2dc6MgonCg
|
|
6
|
+
updateTime: 1774252025000
|
|
7
|
+
sourceUrl: https://docs-v2.thinkingdata.cn/?version=v6.0&lan=en-US&code=filebeat_logstash_installation
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
This section mainly introduces how to use the file transmission tool Filebeat + Logstash:
|
|
11
|
+
**Before docking, you need to read ****the **[\<text color="purple" underline="true"\>**data rules**\</text\>](https://thinkingdata.feishu.cn/wiki/L5rSwhPp8iycp4kWAnGc35gvn3f)** first, and then read this user guide after you have been familiar with TA's data format and data rules.**
|
|
12
|
+
**Filebeat + Logstash must upload data in the **[\<text color="purple" underline="true"\>**data format**\</text\>](https://thinkingdata.feishu.cn/wiki/L5rSwhPp8iycp4kWAnGc35gvn3f)** of ****the ****TA **
|
|
13
|
+
**Note: Logstash has low throughput. If you import bulk historical data, **[\<text color="purple" underline="true"\>**DataX engine**\</text\>](https://thinkingdata.feishu.cn/wiki/IeE6wBZPviC8FKkt0H7cNHw1nry)** or **[\<text color="purple" underline="true"\>**Logbus tool**\</text\>](https://thinkingdata.feishu.cn/wiki/SlE6wOEK3isQvukzEbnc5V0inNa)** is recommended**
|
|
14
|
+
## I. Introduction to Filebeat + Logstash
|
|
15
|
+
Filebeat + Logstash is mainly used to import log data to the TA background in real time. It will monitor the file flow in the log directory of the server. When any log file in the directory has new data, it will send it to the TA background in real time.
|
|
16
|
+
Logstash is an open source data collection engine with real-time pipelining capabilities. Logstash can dynamically unify data from disparate sources and normalize the data into destinations of your choice. [introduction to Logstash's official website](https%3A%2F%2Fwww.elastic.co%2Flogstash%2F)
|
|
17
|
+
Filebeat is a lightweight shipper for forwarding and centralizing log data. Installed as an agent on your servers, Filebeat monitors the log files or locations that you specify, collects log events, and forwards them either to Elasticsearch or Logstash for indexing. [introduction to Filebeat's official website](https%3A%2F%2Fwww.elastic.co%2Fbeats%2Ffilebeat)
|
|
18
|
+
The acquisition flow chart based on Filebeat + Logstash is shown in the following figure:
|
|
19
|
+
\<image token="GIcrbrMkxolMKDxMOZYcjMxWnch" width="1280" height="442" align="center"/\>
|
|
20
|
+
|
|
21
|
+
## II. Download and install Filebeat + Logstash
|
|
22
|
+
**Note: For Logstash-6.x and above, its server has a JDK environment**
|
|
23
|
+
### 2.2 Download and install Logstash
|
|
24
|
+
Refer to the [installation document on Logstash's official website](https://www.elastic.co/guide/en/logstash/7.6/installing-logstash.html), and choose the download method
|
|
25
|
+
### 2.3 logstash-output-thinkingdata plugin
|
|
26
|
+
**Latest version:**1.0.0
|
|
27
|
+
**Update time: **2020-06-09
|
|
28
|
+
#### 2.3.1 Install and uninstall the logstash-output-thinkingdata plugin
|
|
29
|
+
This plugin is used to check whether the data is json data and send the packaged data to TA
|
|
30
|
+
Execute in the logstash directory:
|
|
31
|
+
```plaintext {wrap}
|
|
32
|
+
bin/logstash-plugin install logstash-output-thinkingdata
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Its installation will take a while. Please wait patiently, and then execute:
|
|
36
|
+
```plaintext {wrap}
|
|
37
|
+
bin/logstash-plugin list
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
If the list has **logstash-output-thinkingdata**, it means that it has been successfully installed.
|
|
41
|
+
Other commands are shown below:
|
|
42
|
+
To update the plugin, you can execute:
|
|
43
|
+
```plaintext
|
|
44
|
+
bin/logstash-plugin update logstash-output-thinkingdata
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
To uninstall the plugin, you can execute:
|
|
48
|
+
```plaintext
|
|
49
|
+
bin/logstash-plugin uninstall logstash-output-thinkingdata
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
#### 2.3.2 Change Log
|
|
53
|
+
##### **v1.0.0 2020/06/09**
|
|
54
|
+
- Receive the message from the event in Logstash and send it to TA
|
|
55
|
+
### 2.4 Download and install Filebeat
|
|
56
|
+
Refer to the [installation document on Filebeat's official website](https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html), and choose the download method
|
|
57
|
+
## III. Filebeat + Logstash use instructions
|
|
58
|
+
### 3.1 Data preparation
|
|
59
|
+
1. First, convert the to-be-transmitted data into TA's [\<text color="purple" underline="true"\>data format\</text\>](https://thinkingdata.feishu.cn/wiki/L5rSwhPp8iycp4kWAnGc35gvn3f) by ETL, and write it locally or transmit it to the Kafka cluster. If TE's SDKs is involved to generate these data, the data has been correctly formatted without further conversion.
|
|
60
|
+
2. Determine the directory where the uploaded data files are stored, or the address and topic of Kafka, and configure Filebeat + Logstash. In this case, Filebeat + Logstash will monitor the file changes in the file directory (monitor new files or tail existing files) or subscribe to data in Kafka.
|
|
61
|
+
3. Do not directly rename the uploaded data logs stored in the monitoring directory. Renaming the log is equivalent to creating a new file, and Filebeat may re-upload these files, resulting in data duplication.
|
|
62
|
+
### 3.2 Logstash configuration
|
|
63
|
+
#### 3.2.1 Logstash Pipeline configuration
|
|
64
|
+
Logstash supports running multiple Pipelines at the same time. Pipelines do not affect each other and have their own independent input and output configurations. The configuration file of Pipeline is located in config/pipelines.yml.If you are currently using Logstash to complete some other log acquisition tasks, you can acquire TA's log data by adding a pipeline to the original Logstash and send it to TA
|
|
65
|
+
The new Pipeline is configured as follows:
|
|
66
|
+
```plaintext {wrap}
|
|
67
|
+
# Pipeline configuration of thinkingdata
|
|
68
|
+
- pipeline.id: thinkingdata-output
|
|
69
|
+
# If the number of cores for uploading user property is set to 1, only the upload event property can be set to be less than or equal to the number of local CPUs
|
|
70
|
+
pipeline.workers: 1
|
|
71
|
+
# Buffer queue type
|
|
72
|
+
queue.type: persisted
|
|
73
|
+
# Different input and output configurations
|
|
74
|
+
path.config: "/home/elk/conf/ta_output.conf"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
For more Pipeline configurations, please visit the official website: [Pipeline](https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html)
|
|
78
|
+
#### 3.2.2 Logstash input and output configurations
|
|
79
|
+
ta_output.conf reference example:
|
|
80
|
+
**Note: This scenario is based on the data file generated by the SDK, the output and input configurations of Logstash**
|
|
81
|
+
```plaintext {wrap}
|
|
82
|
+
# use beats as input
|
|
83
|
+
input {
|
|
84
|
+
beats {
|
|
85
|
+
port => "5044"
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
# if the data is not generated by the server SDK or is in the TA format, a filter is required to filter the metadata. The ruby plugin filter is recommended here. The fourth module has a case
|
|
89
|
+
#filter {
|
|
90
|
+
# if "log4j" in [tags] {
|
|
91
|
+
# ruby {
|
|
92
|
+
# path => "/home/elk/conf/rb/log4j_filter.rb"
|
|
93
|
+
# }
|
|
94
|
+
# }
|
|
95
|
+
#}
|
|
96
|
+
# Use thinkingdata as output
|
|
97
|
+
output{
|
|
98
|
+
thinkingdata {
|
|
99
|
+
url => "http://data acquisition address/logbus"
|
|
100
|
+
appid =>"your AppID"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
thinkingdata parameter description:
|
|
106
|
+
|
|
107
|
+
\<lark-table rows="8" cols="5" column-widths="146,146,146,103,173"\>
|
|
108
|
+
|
|
109
|
+
\<lark-tr\>
|
|
110
|
+
\<lark-td\>
|
|
111
|
+
**Parameter name**
|
|
112
|
+
\</lark-td\>
|
|
113
|
+
\<lark-td\>
|
|
114
|
+
**Type**
|
|
115
|
+
\</lark-td\>
|
|
116
|
+
\<lark-td\>
|
|
117
|
+
**Required field**
|
|
118
|
+
\</lark-td\>
|
|
119
|
+
\<lark-td\>
|
|
120
|
+
**Default value**
|
|
121
|
+
\</lark-td\>
|
|
122
|
+
\<lark-td\>
|
|
123
|
+
**Description**
|
|
124
|
+
\</lark-td\>
|
|
125
|
+
\</lark-tr\>
|
|
126
|
+
\<lark-tr\>
|
|
127
|
+
\<lark-td\>
|
|
128
|
+
url
|
|
129
|
+
\</lark-td\>
|
|
130
|
+
\<lark-td\>
|
|
131
|
+
string
|
|
132
|
+
\</lark-td\>
|
|
133
|
+
\<lark-td\>
|
|
134
|
+
true
|
|
135
|
+
\</lark-td\>
|
|
136
|
+
\<lark-td\>
|
|
137
|
+
None
|
|
138
|
+
\</lark-td\>
|
|
139
|
+
\<lark-td\>
|
|
140
|
+
TA data receiving address
|
|
141
|
+
\</lark-td\>
|
|
142
|
+
\</lark-tr\>
|
|
143
|
+
\<lark-tr\>
|
|
144
|
+
\<lark-td\>
|
|
145
|
+
appid
|
|
146
|
+
\</lark-td\>
|
|
147
|
+
\<lark-td\>
|
|
148
|
+
string
|
|
149
|
+
\</lark-td\>
|
|
150
|
+
\<lark-td\>
|
|
151
|
+
true
|
|
152
|
+
\</lark-td\>
|
|
153
|
+
\<lark-td\>
|
|
154
|
+
None
|
|
155
|
+
\</lark-td\>
|
|
156
|
+
\<lark-td\>
|
|
157
|
+
Project APPID
|
|
158
|
+
\</lark-td\>
|
|
159
|
+
\</lark-tr\>
|
|
160
|
+
\<lark-tr\>
|
|
161
|
+
\<lark-td\>
|
|
162
|
+
flush_interval_sec
|
|
163
|
+
\</lark-td\>
|
|
164
|
+
\<lark-td\>
|
|
165
|
+
number
|
|
166
|
+
\</lark-td\>
|
|
167
|
+
\<lark-td\>
|
|
168
|
+
false
|
|
169
|
+
\</lark-td\>
|
|
170
|
+
\<lark-td\>
|
|
171
|
+
2
|
|
172
|
+
\</lark-td\>
|
|
173
|
+
\<lark-td\>
|
|
174
|
+
flush interval, unit: second
|
|
175
|
+
\</lark-td\>
|
|
176
|
+
\</lark-tr\>
|
|
177
|
+
\<lark-tr\>
|
|
178
|
+
\<lark-td\>
|
|
179
|
+
flush_batch_size
|
|
180
|
+
\</lark-td\>
|
|
181
|
+
\<lark-td\>
|
|
182
|
+
number
|
|
183
|
+
\</lark-td\>
|
|
184
|
+
\<lark-td\>
|
|
185
|
+
false
|
|
186
|
+
\</lark-td\>
|
|
187
|
+
\<lark-td\>
|
|
188
|
+
500
|
|
189
|
+
\</lark-td\>
|
|
190
|
+
\<lark-td\>
|
|
191
|
+
flush json data, unit: pcs
|
|
192
|
+
\</lark-td\>
|
|
193
|
+
\</lark-tr\>
|
|
194
|
+
\<lark-tr\>
|
|
195
|
+
\<lark-td\>
|
|
196
|
+
compress
|
|
197
|
+
\</lark-td\>
|
|
198
|
+
\<lark-td\>
|
|
199
|
+
number
|
|
200
|
+
\</lark-td\>
|
|
201
|
+
\<lark-td\>
|
|
202
|
+
false
|
|
203
|
+
\</lark-td\>
|
|
204
|
+
\<lark-td\>
|
|
205
|
+
1
|
|
206
|
+
\</lark-td\>
|
|
207
|
+
\<lark-td\>
|
|
208
|
+
Data compression. 0 means no data compression, which can be set in the intranet; 1 means gzip compression (by default)
|
|
209
|
+
\</lark-td\>
|
|
210
|
+
\</lark-tr\>
|
|
211
|
+
\<lark-tr\>
|
|
212
|
+
\<lark-td\>
|
|
213
|
+
uuid
|
|
214
|
+
\</lark-td\>
|
|
215
|
+
\<lark-td\>
|
|
216
|
+
boolean
|
|
217
|
+
\</lark-td\>
|
|
218
|
+
\<lark-td\>
|
|
219
|
+
false
|
|
220
|
+
\</lark-td\>
|
|
221
|
+
\<lark-td\>
|
|
222
|
+
false
|
|
223
|
+
\</lark-td\>
|
|
224
|
+
\<lark-td\>
|
|
225
|
+
Enable the UUID switch or not, to de-duplicate network fluctuations that may occur in short time intervals
|
|
226
|
+
\</lark-td\>
|
|
227
|
+
\</lark-tr\>
|
|
228
|
+
\<lark-tr\>
|
|
229
|
+
\<lark-td\>
|
|
230
|
+
is_filebeat_status_record
|
|
231
|
+
\</lark-td\>
|
|
232
|
+
\<lark-td\>
|
|
233
|
+
boolean
|
|
234
|
+
\</lark-td\>
|
|
235
|
+
\<lark-td\>
|
|
236
|
+
false
|
|
237
|
+
\</lark-td\>
|
|
238
|
+
\<lark-td\>
|
|
239
|
+
true
|
|
240
|
+
\</lark-td\>
|
|
241
|
+
\<lark-td\>
|
|
242
|
+
Enable Filebeat monitoring log status or not, such as offset and file name
|
|
243
|
+
\</lark-td\>
|
|
244
|
+
\</lark-tr\>
|
|
245
|
+
\</lark-table\>
|
|
246
|
+
|
|
247
|
+
#### 3.2.3 Logstash running configuration
|
|
248
|
+
Logstash uses **config/logstash.yml **as the running configuration by default.
|
|
249
|
+
```plaintext
|
|
250
|
+
pipeline.workers: 1
|
|
251
|
+
queue.type: persisted
|
|
252
|
+
queue.drain: true
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Suggestions**
|
|
256
|
+
1. User_set is used to change the value of pipeline.workers to 1 when reporting the user property. When the value of workers is greater than 1, the order of data processing will change. Track event can be set greater than 1.
|
|
257
|
+
2. To ensure that the to-be-transmitted data will not be lost due to the unexpected termination of the program, please set queue.type: persisted, which represents the buffer queue type of Logstash, so that you can continue to send the data in the buffer queue after restarting Logstash.
|
|
258
|
+
**For more information about data persistence, please refer to the official website **[persistent-queues](https://www.elastic.co/guide/en/logstash/current/persistent-queues.html)
|
|
259
|
+
3. Set the value of queue.drain to true. In this case, Logstash will send all the data in all buffer queues before normal exit.
|
|
260
|
+
**For more details, please refer to the official website** [logstash.yml](https://www.elastic.co/guide/en/logstash/current/logstash-settings-file.html)
|
|
261
|
+
#### 3.2.4 Logstash start
|
|
262
|
+
In the Logstash installation directory
|
|
263
|
+
1. Start directly, use config/pipelines.yml as Pipeline configuration and running configuration
|
|
264
|
+
```python {wrap}
|
|
265
|
+
bin/logstash
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
2. Specify ta_output.conf as the input and output configuration file, and use config/logstash.yml as the running configuration
|
|
269
|
+
```plaintext
|
|
270
|
+
bin/logstash -f /youpath/ta_output.conf
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
3. Start at the background
|
|
274
|
+
```plaintext
|
|
275
|
+
nohup bin/logstash -f /youpath/ta_output.conf > /dev/null 2>&1 &
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
For more information, you can view the [startup document on Logstash's official website](https://www.elastic.co/guide/en/logstash/7.6/setup-logstash.html)
|
|
279
|
+
### 3.3 Filebeat configuration
|
|
280
|
+
#### 3.3.1 Filebeat running configuration {folded="true"}
|
|
281
|
+
Filebeat reads backend SDK log files. Filebeat default configuration file: filebeat.yml. The reference configuration of config/filebeat.yml is as follows:
|
|
282
|
+
```yaml
|
|
283
|
+
#======================= Filebeat inputs =========================
|
|
284
|
+
filebeat.shutdown_timeout: 5s
|
|
285
|
+
filebeat.inputs:
|
|
286
|
+
- type: log
|
|
287
|
+
enabled: true
|
|
288
|
+
paths:
|
|
289
|
+
- /var/log/log.*
|
|
290
|
+
#- c:\\programdata\\elasticsearch\\logs\\*
|
|
291
|
+
#------------------------- Logstash output ----------------------------
|
|
292
|
+
output.logstash:
|
|
293
|
+
# you can fill in the process of a server, or you can fill in the Logstash process on multiple servers
|
|
294
|
+
hosts: ["ip1:5044","ip2:5044"]
|
|
295
|
+
loadbalance: false
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
1. [shutdown_timeout](https://www.elastic.co/guide/en/beats/filebeat/6.7/how-filebeat-works.html#at-least-once-delivery): The shutdown time that Filebeat waits for the publisher to send all events before shutdown
|
|
299
|
+
2. **paths: **Specify the logs to be monitored. Currently, it is processed according to the glob function of the Go language, and the configuration directory is not recursively processed.
|
|
300
|
+
3. **hosts: **The sending address is multiple Logstash hosts. When loadbalance is false, it is similar to the active/standby function, true means load balance
|
|
301
|
+
4. **loadbalance**: Do not set loadbalance: true if the **user_set **user property is reported, send data to all Logstash by poll, which may cause the data sequence to be disrupted.
|
|
302
|
+
If you only import **track** events, you can set multiple Logstash processes, and set loadbalance: true. The default configuration of Filebeat is loadbalance: false
|
|
303
|
+
Filebeat information is available on [Filebeat official document](https://www.elastic.co/guide/en/beats/filebeat/current/index.html)
|
|
304
|
+
#### 3.3.2 Filebeat start
|
|
305
|
+
After filebeat starts, you can check the relevant output information:
|
|
306
|
+
```plaintext
|
|
307
|
+
./filebeat -e -c filebeat.yml
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
Start at the background
|
|
311
|
+
```plaintext
|
|
312
|
+
nohup ./filebeat -c filebeat.yml > /dev/null 2>&1 &
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
## IV. Case reference configuration
|
|
316
|
+
### 4.1 filebeat monitors data configuration in different log formats
|
|
317
|
+
The filebeat.xml of a single Filebeat can be set as follows. The running memory is about 10 MB, and multiple filebeat processes can be started to monitor different log formats. For details, please visit the official website
|
|
318
|
+
```plaintext
|
|
319
|
+
#=========================== Filebeat inputs =============================
|
|
320
|
+
|
|
321
|
+
filebeat.inputs:
|
|
322
|
+
- type: log
|
|
323
|
+
enabled: true
|
|
324
|
+
# monitored directory
|
|
325
|
+
paths:
|
|
326
|
+
- /home/elk/sdk/*/log.*
|
|
327
|
+
# tag the data. Logstash will match the data, but will not filter the data
|
|
328
|
+
tags: ["sdklog"]
|
|
329
|
+
#data split by special characters
|
|
330
|
+
- type: log
|
|
331
|
+
enable: true
|
|
332
|
+
paths: /home/txt/split.*
|
|
333
|
+
# tag the data. Logstash will match and filter the data
|
|
334
|
+
tags: ["split"]
|
|
335
|
+
# data received by log4j
|
|
336
|
+
- type: log
|
|
337
|
+
enable: true
|
|
338
|
+
paths: /home/web/logs/*.log
|
|
339
|
+
# filter
|
|
340
|
+
tags: ["log4j"]
|
|
341
|
+
# data received by log4j
|
|
342
|
+
# nginx log data
|
|
343
|
+
- type: log
|
|
344
|
+
enable: true
|
|
345
|
+
paths: /home/web/logs/*.log
|
|
346
|
+
tags: ["nginx"]
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### 4.2 Logstash configuration
|
|
350
|
+
Test whether the configuration file of Logstash is incorrect
|
|
351
|
+
```plaintext
|
|
352
|
+
bin/logstash -f /home/elk/ta_output.conf --config.test_and_exit
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
**Note: All ruby plugins in the following scripts are written based on ruby syntax. If you are familiar with java, you can use the custom parser in the logbus directory**
|
|
356
|
+
#### 4.2.1 Server SDK log
|
|
357
|
+
ta_output.conf can be set as follows
|
|
358
|
+
```plaintext
|
|
359
|
+
input {
|
|
360
|
+
beats {
|
|
361
|
+
port => "5044"
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
# use thinkingdata as output
|
|
365
|
+
output{
|
|
366
|
+
thinkingdata {
|
|
367
|
+
url => "url"
|
|
368
|
+
appid =>"appid"
|
|
369
|
+
# compress => 0
|
|
370
|
+
# uuid => true
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
#### 4.2.2 log4j log
|
|
376
|
+
The log4j format can be set as follows according to the business log:
|
|
377
|
+
```java {wrap}
|
|
378
|
+
//log format
|
|
379
|
+
//[%d{yyyy-MM-dd HH:mm:ss.SSS}] the log has the input time of TA, which can also be yyyy-MM-dd HH:mm:ss
|
|
380
|
+
//[%level{length=5}] log level, debug, info, warn, error
|
|
381
|
+
//[%thread-%tid] current thread information
|
|
382
|
+
//[%logger] full path of the class to which the current log information belongs
|
|
383
|
+
//[%X{hostName}] current node hostname. To be customized through MDC.
|
|
384
|
+
//[%X{ip}] current node ip. To be customized through MDC.。
|
|
385
|
+
//[%X{userId}] the unique ID for user login can be set to account_id or other values. TA requires that account_id and distinct_id cannot be empty at the same time. You can set other properties according to business settings. It needs to be customized through MDC.
|
|
386
|
+
//[%X{applicationName}] current application name. You need to customize it through MDC.
|
|
387
|
+
//[%F,%L,%C,%M] %F: the name of the file (class) to which the current log information belongs, %L: the line number of the log information in the file, %C: the full class name of the file to which the current log belongs, %M: method name in the current log
|
|
388
|
+
//[%m] log details
|
|
389
|
+
//%ex exception information
|
|
390
|
+
//%n new line
|
|
391
|
+
<property name="patternLayout">[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%level{length=5}] [%thread-%tid] [%logger] [%X{hostName}] [%X{ip}] [%X{userId}] [%X{applicationName}] [%F,%L,%C,%M] [%m] ## '%ex'%n
|
|
392
|
+
</property>
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
ta_output.conf configuration
|
|
396
|
+
```bash
|
|
397
|
+
input {
|
|
398
|
+
beats {
|
|
399
|
+
port => "5044"
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
filter {
|
|
403
|
+
if "log4j" in [tags]{
|
|
404
|
+
#you can also process other filter data
|
|
405
|
+
ruby {
|
|
406
|
+
path => "/home/conf/log4j.rb"
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
# use thinkingdata as output
|
|
411
|
+
output{
|
|
412
|
+
thinkingdata {
|
|
413
|
+
url => "url"
|
|
414
|
+
appid =>"appid"
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
/home/conf/log4j.rb script is as follows
|
|
420
|
+
```ruby {wrap}
|
|
421
|
+
# here you can get all the properties in the input through the parameter event
|
|
422
|
+
def filter(event)
|
|
423
|
+
_message = event.get('message') #message is every log you upload
|
|
424
|
+
begin
|
|
425
|
+
# here is the format for regularizing the correct data. If it is an error log, it is recommended to put it in a separate file. The error log is too long without an analysis scenario, and a new line is generated
|
|
426
|
+
# the format of the data is similar to the following _message="[2020-06-08 23:19:56.003] [INFO] [main-1] [cn.thinkingdata] [x] [123.123.123.123] [x] [x ] [StartupInfoLogger.java,50,o)] ## ''"
|
|
427
|
+
mess = /\[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] ## '(.*?)'/.match(_message)
|
|
428
|
+
time = mess[1]
|
|
429
|
+
level = mess[2]
|
|
430
|
+
thread = mess[3]
|
|
431
|
+
class_name_all = mess[4]
|
|
432
|
+
event_name = mess[5]
|
|
433
|
+
ip = mess[6]
|
|
434
|
+
account_id = mess[7]
|
|
435
|
+
application_name = mess[8]
|
|
436
|
+
other_mess = mess[9]
|
|
437
|
+
exp = mess[10]
|
|
438
|
+
|
|
439
|
+
if event_name.empty? || account_id.empty?
|
|
440
|
+
return []
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
properties = {
|
|
444
|
+
'level' => level,
|
|
445
|
+
'thread' => thread,
|
|
446
|
+
'application_name' => application_name,
|
|
447
|
+
'class_name_all' => class_name_all,
|
|
448
|
+
'other_mess' => other_mess,
|
|
449
|
+
'exp' => exp
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
data = {
|
|
453
|
+
'#ip' => ip,
|
|
454
|
+
'#time' => time,
|
|
455
|
+
'#account_id'=>account_id,
|
|
456
|
+
'#event_name'=>event_name, #if the type is track, it can be used, if there is no #event_name, no data needs to be uploaded
|
|
457
|
+
'#type' =>'track', # get from the file. If found in the file, confirm whether the reported data is a user property or an event property
|
|
458
|
+
'properties' => properties
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
event.set('message',data.to_json)
|
|
462
|
+
return [event]
|
|
463
|
+
rescue
|
|
464
|
+
# puts _message
|
|
465
|
+
puts "The data is not in the regular format"
|
|
466
|
+
return [] #no reporting
|
|
467
|
+
end
|
|
468
|
+
end
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
#### 4.2.3 Nginx log
|
|
472
|
+
First define the format of the Nginx log. If it is set to json format
|
|
473
|
+
```bash
|
|
474
|
+
input {
|
|
475
|
+
beats {
|
|
476
|
+
port => "5044"
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
filter {
|
|
480
|
+
#if the data format is the same, there is no need to determine the tags
|
|
481
|
+
if "nginx" in [tags]{
|
|
482
|
+
ruby {
|
|
483
|
+
path => "/home/conf/nginx.rb"
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
# use thinkingdata as output
|
|
488
|
+
output{
|
|
489
|
+
thinkingdata {
|
|
490
|
+
url => "url"
|
|
491
|
+
appid =>"appid"
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
/home/conf/nginx.rb script is as follows:
|
|
497
|
+
```plaintext {wrap}
|
|
498
|
+
require 'date'
|
|
499
|
+
def filter(event)
|
|
500
|
+
# retrieve similar log information
|
|
501
|
+
# {"accessip_list":"124.207.82.22","client_ip":"123.207.82.22","http_host":"203.195.163.239","@timestamp":"2020-06-03T19:47:42+08:00","method":"GET","url":"/urlpath","status":"304","http_referer":"-","body_bytes_sent":"0","request_time":"0.000","user_agent":"s","total_bytes_sent":"180","server_ip":"10.104.137.230"}
|
|
502
|
+
logdata= event.get('message')
|
|
503
|
+
# parse the log level and request time, and save it in the event object
|
|
504
|
+
# Parse json log
|
|
505
|
+
# Get log content
|
|
506
|
+
# Convert to json object
|
|
507
|
+
logInfoJson=JSON.parse logdata
|
|
508
|
+
time = DateTime.parse(logInfoJson['@timestamp']).to_time.localtime.strftime('%Y-%m-%d %H:%M:%S')
|
|
509
|
+
url = logInfoJson['url']
|
|
510
|
+
account_id = logInfoJson['user_agent']
|
|
511
|
+
#event_name
|
|
512
|
+
#account_id or #distinct_id are both null,skip
|
|
513
|
+
if url.empty? || url == "/" || account_id.empty?
|
|
514
|
+
return []
|
|
515
|
+
end
|
|
516
|
+
properties = {
|
|
517
|
+
"accessip_list" => logInfoJson['accessip_list'],
|
|
518
|
+
"http_host"=>logInfoJson['http_host'],
|
|
519
|
+
"method" => logInfoJson['method'],
|
|
520
|
+
"url"=>logInfoJson['url'],
|
|
521
|
+
"status" => logInfoJson['status'].to_i,
|
|
522
|
+
"http_referer" => logInfoJson['http_referer'],
|
|
523
|
+
"body_bytes_sent" =>logInfoJson['body_bytes_sent'],
|
|
524
|
+
"request_time" => logInfoJson['request_time'],
|
|
525
|
+
"total_bytes_sent" => logInfoJson['total_bytes_sent'],
|
|
526
|
+
"server_ip" => logInfoJson['server_ip'],
|
|
527
|
+
}
|
|
528
|
+
data = {
|
|
529
|
+
'#ip' => logInfoJson['client_ip'],# null
|
|
530
|
+
'#time' => time, # not null
|
|
531
|
+
'#account_id'=>account_id, # account_id and distinct_id cannot be both null
|
|
532
|
+
'#event_name'=>url, # if the type is track, it can be used, if there is no #event_name, no data needs to be uploaded
|
|
533
|
+
'#type' =>'track', # get from the file. If found in the file, confirm whether the reported data is a user property or an event property
|
|
534
|
+
'properties' => properties
|
|
535
|
+
}
|
|
536
|
+
event.set('message',data.to_json)
|
|
537
|
+
return [event]
|
|
538
|
+
|
|
539
|
+
end
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
#### 4.2.4 Other logs
|
|
543
|
+
ta_output.conf is configured as follows
|
|
544
|
+
```bash
|
|
545
|
+
input {
|
|
546
|
+
beats {
|
|
547
|
+
port => "5044"
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
filter {
|
|
551
|
+
if "other" in [tags]{
|
|
552
|
+
# you can also process other filter data
|
|
553
|
+
ruby {
|
|
554
|
+
path => "/home/conf/outher.rb"
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
# use thinkingdata as output
|
|
559
|
+
output{
|
|
560
|
+
thinkingdata {
|
|
561
|
+
url => "url"
|
|
562
|
+
appid =>"appid"
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
/home/conf/outher.rb script is as follows
|
|
568
|
+
```ruby {wrap}
|
|
569
|
+
# def register(params)
|
|
570
|
+
# # the parameters obtained through params here are passed in through script_params in the logstash file
|
|
571
|
+
# #@message = params["xx"]
|
|
572
|
+
# end
|
|
573
|
+
def filter(event)
|
|
574
|
+
# business data is processed here. If there is no series of processing such as grok, directly obtain metadata in message
|
|
575
|
+
begin
|
|
576
|
+
_message = event.get('message') #message is every log you upload
|
|
577
|
+
# the log processed here is similar to the following data
|
|
578
|
+
#2020-06-01 22:20:11.222,123455,123.123.123.123,login,nihaoaaaaa,400
|
|
579
|
+
time,account_id,ip,event_name,msg,intdata=_message.split(/,/)
|
|
580
|
+
# or through regular matching data, or json data, ruby syntax can parse json, and data can be processed here for data reporting
|
|
581
|
+
#mess = /regular/.match(_message)
|
|
582
|
+
#time = mess[1]
|
|
583
|
+
#level = mess[2]
|
|
584
|
+
#thread = mess[3]
|
|
585
|
+
#class_name_all = mess[4]
|
|
586
|
+
#event_name = mess[5]
|
|
587
|
+
#account_id = mess[6]
|
|
588
|
+
#api = mess[7]
|
|
589
|
+
|
|
590
|
+
properties = {
|
|
591
|
+
'msg' => msg,
|
|
592
|
+
'int_data' => intdata.to_i #to_i is int type, to_f is float type, to_s is string type (default)
|
|
593
|
+
}
|
|
594
|
+
data = {
|
|
595
|
+
'#time' => time,
|
|
596
|
+
'#account_id'=>account_id,
|
|
597
|
+
'#event_name'=>event_name,
|
|
598
|
+
'#ip' => ip,
|
|
599
|
+
'#type' =>'track',
|
|
600
|
+
'properties' => properties
|
|
601
|
+
}
|
|
602
|
+
event.set('message',data.to_json)
|
|
603
|
+
|
|
604
|
+
return [event]
|
|
605
|
+
rescue
|
|
606
|
+
# if you don't want a certain data to be null or incorrect, you can return null, for example, account_id or distinct_id are null and return [] directly
|
|
607
|
+
return []
|
|
608
|
+
end
|
|
609
|
+
end
|
|
610
|
+
```
|