From dcce1a745f90266ff367d7dbcb1ae954684bb183 Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Fri, 26 Jun 2026 11:27:11 +0800 Subject: [PATCH 01/13] fix oml config --- benchmark/models/oml/aws.oml | 4 ++-- benchmark/models/oml/nginx.oml | 2 +- benchmark/models/oml/nginx_static.oml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/benchmark/models/oml/aws.oml b/benchmark/models/oml/aws.oml index 79375731..adf344d7 100644 --- a/benchmark/models/oml/aws.oml +++ b/benchmark/models/oml/aws.oml @@ -1,6 +1,6 @@ name : /oml/normal/aws rule : /aws/* -enable : false +enable : true --- sent_bytes:digit = take(sent_bytes) ; target_status_code:digit = take(target_status_code) ; @@ -17,4 +17,4 @@ str_elb_status = match read(option:[elb_status_code]) { digit(200) => chars(ok); digit(404) => chars(error); }; -//* : auto = read(); +* : auto = read(); diff --git a/benchmark/models/oml/nginx.oml b/benchmark/models/oml/nginx.oml index 3f0b4a0f..298e3099 100644 --- a/benchmark/models/oml/nginx.oml +++ b/benchmark/models/oml/nginx.oml @@ -1,6 +1,6 @@ name : /oml/normal/nginx rule : /nginx/* -//enable : false +enable : true --- size : digit = take(size); status : digit = take(status); diff --git a/benchmark/models/oml/nginx_static.oml b/benchmark/models/oml/nginx_static.oml index b3d53326..b1751602 100644 --- a/benchmark/models/oml/nginx_static.oml +++ b/benchmark/models/oml/nginx_static.oml @@ -1,6 +1,6 @@ name : /oml/static/nginx rule : /nginx/* -//enable : false +enable : false --- static { localhost = chars("localhost"); @@ -19,4 +19,4 @@ match_chars = match read(wp_src_ip) { ip(127.0.0.1) => localhost ; !ip(127.0.0.1) => attack_ip ; }; -* : auto = take(); +* : auto = read(); From 7c50a88201a18f933e79a7d29c78cf5710ed3179 Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Mon, 29 Jun 2026 10:29:01 +0800 Subject: [PATCH 02/13] fix mixed logs --- benchmark/models/oml/nginx.oml | 2 +- benchmark/models/oml/nginx_static.oml | 2 +- benchmark/models/wpl/mixed/sample.dat | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/benchmark/models/oml/nginx.oml b/benchmark/models/oml/nginx.oml index 298e3099..383facd4 100644 --- a/benchmark/models/oml/nginx.oml +++ b/benchmark/models/oml/nginx.oml @@ -1,6 +1,6 @@ name : /oml/normal/nginx rule : /nginx/* -enable : true +enable : false --- size : digit = take(size); status : digit = take(status); diff --git a/benchmark/models/oml/nginx_static.oml b/benchmark/models/oml/nginx_static.oml index b1751602..25059496 100644 --- a/benchmark/models/oml/nginx_static.oml +++ b/benchmark/models/oml/nginx_static.oml @@ -1,6 +1,6 @@ name : /oml/static/nginx rule : /nginx/* -enable : false +enable : true --- static { localhost = chars("localhost"); diff --git a/benchmark/models/wpl/mixed/sample.dat b/benchmark/models/wpl/mixed/sample.dat index bc95020f..b551aff5 100644 --- a/benchmark/models/wpl/mixed/sample.dat +++ b/benchmark/models/wpl/mixed/sample.dat @@ -1,7 +1,10 @@ 180.57.30.148 - - [21/Jan/2025:01:40:02 +0800] "GET /nginx-logo.png HTTP/1.1" 500 368 "http://207.131.38.110/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-" 180.57.30.148 - - [21/Jan/2025:01:40:02 +0800] "GET /nginx-logo.png HTTP/1.1" 500 368 "http://207.131.38.110/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-" -180.57.30.148 - - [21/Jan/2025:01:40:02 +0800] "GET /nginx-logo.png HTTP/1.1" 500 368 "http://207.131.38.110/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-" http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 +http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 +http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 +http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 +2018-01-30 13:12:21 Security +01:00 Block: type=FWD|action=BLOCK|proto=UDP|ipVersion=4|srcIF=eth0|srcZone=LAN|srcIP=10.17.34.12|srcPort=54915|srcMAC=18:db:f2:13:ca:9c|srcNAT=0.0.0.0|srcCountry=CN|srcASN=4134|dstIF=eth1|dstZone=WAN|dstIP=10.17.34.255|dstPort=54915|dstService=custom_udp|dstNAT=0.0.0.0|dstCountry=US|dstASN=15169|rule=BLOCKALL|ruleType=FirewallPolicy|policyId=policy_10234|policyGroup=corp_default|interfaceGroup=internal_to_external|routingTable=main|connState=NEW|sessionId=843920184|sessionDuration=0|receivedPackets=0|sentPackets=0|receivedBytes=0|sentBytes=0|packetCount=1|byteCount=60|tcpFlags=|icmpType=|icmpCode=|application=unknown|applicationRisk=0|applicationCategory=unclassified|protocolDetection=enabled|detectedProtocol=udp_generic|user=john.doe|userGroup=employees|authMethod=ldap|vpnType=none|vpnTunnelId=0|contentProfile=default|contentAction=none|url=http://example.com/resource|urlCategory=uncategorized|threatLevel=0|threatName=none|signatureId=0|signatureVersion=0|limitProfile=default|rateLimitPps=1200|rateLimitBps=768000|logSource=box_firewall_activity|logType=activity|logVersion=1 2018-01-30 13:12:21 Security +01:00 Block: type=FWD|action=BLOCK|proto=UDP|ipVersion=4|srcIF=eth0|srcZone=LAN|srcIP=10.17.34.12|srcPort=54915|srcMAC=18:db:f2:13:ca:9c|srcNAT=0.0.0.0|srcCountry=CN|srcASN=4134|dstIF=eth1|dstZone=WAN|dstIP=10.17.34.255|dstPort=54915|dstService=custom_udp|dstNAT=0.0.0.0|dstCountry=US|dstASN=15169|rule=BLOCKALL|ruleType=FirewallPolicy|policyId=policy_10234|policyGroup=corp_default|interfaceGroup=internal_to_external|routingTable=main|connState=NEW|sessionId=843920184|sessionDuration=0|receivedPackets=0|sentPackets=0|receivedBytes=0|sentBytes=0|packetCount=1|byteCount=60|tcpFlags=|icmpType=|icmpCode=|application=unknown|applicationRisk=0|applicationCategory=unclassified|protocolDetection=enabled|detectedProtocol=udp_generic|user=john.doe|userGroup=employees|authMethod=ldap|vpnType=none|vpnTunnelId=0|contentProfile=default|contentAction=none|url=http://example.com/resource|urlCategory=uncategorized|threatLevel=0|threatName=none|signatureId=0|signatureVersion=0|limitProfile=default|rateLimitPps=1200|rateLimitBps=768000|logSource=box_firewall_activity|logType=activity|logVersion=1 #Feb 7 2025 15:07:18+08:00 USG1000E %%01ANTI-APT/4/ANTI-APT(l)[29]: An advanced persistent threat was detected. (SyslogId=1, VSys="public-long-virtual-system-name-for-testing-extra-large-value-to-simulate-enterprise-scenario", Policy="trust-untrust-high-risk-policy-with-deep-inspection-and-layer7-protection-enabled-for-advanced-threat-detection", SrcIp=192.168.1.123, DstIp=182.150.63.102, SrcPort=51784, DstPort=10781, SrcZone=trust-zone-with-multiple-segments-for-internal-security-domains-and-access-control, DstZone=untrust-wide-area-network-zone-with-external-facing-interfaces-and-honeynet-integration, User="unknown-long-user-field-used-for-simulation-purpose-with-extra-description-and-tags-[tag1][tag2][tag3]-to-reach-required-size", Protocol=TCP, Application="HTTP-long-application-signature-identification-with-multiple-behavior-patterns-and-deep-packet-inspection-enabled", Profile="IPS_default_advanced_extended_profile_with_ml_detection-long", Direction=aaa-long-direction-field-used-to-extend-size-with-additional-info-about-traffic-orientation-from-client-to-server, ThreatType=File Reputation with additional descriptive context of multi-layer analysis engine including sandbox-behavioral-signature-ml-static-analysis-and-network-correlation-modules-working-together, ThreatName=bbb-advanced-threat-campaign-with-code-name-operation-shadow-storm-and-related-IOCs-collected-over-multiple-incidents-in-the-wild-attached-metadata-[phase1][phase2][phase3], Action=ccc-block-and-alert-with-deep-scan-followed-by-quarantine-and-forensic-dump-generation-for-further-investigation, FileType=ddd-executable-binary-with-multiple-packed-layers-suspicious-import-table-behavior-and-evasion-techniques, Hash=eee1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef-long-hash-value-used-for-testing-purpose-extended-with-multiple-hash-representations-[MD5:aaa111bbb222ccc333]-[SHA1:bbb222ccc333ddd444]-[SHA256:ccc333ddd444eee555]-[SSDEEP:ddd444eee555fff666]-end-of-hash-section, ExtraInfo="This is additional extended information purposely added to inflate the total log size for stress testing of log ingestion engines such as Vector, Fluent Bit, self-developed ETL pipelines, and any high-throughput log processing systems. It contains repeated segments to simulate realistic verbose threat intelligence attachment blocks. [SEG-A-BEGIN] The threat was part of a coordinated multi-vector campaign observed across various geographic regions targeting enterprise networks with spear-phishing, watering-hole attacks, and supply-chain compromise vectors. Enriched indicators include C2 domains, malware families, behavioral clusters, sandbox detonation traces, and network telemetry correlation. [SEG-A-END] [SEG-B-BEGIN] Further analysis revealed that the payload exhibited persistence techniques including registry autoruns, scheduled tasks, masquerading, process injection, and lateral movement attempts leveraging remote service creation and stolen credentials. The binary contains multiple obfuscation layers, anti-debugging, anti-VM checks, and unusual API call sequences. [SEG-B-END] [SEG-C-BEGIN] IOC Bundle: Domains=malicious-domain-example-01.com,malicious-domain-example-02.net,malicious-update-service.info; IPs=103.21.244.0,198.51.100.55,203.0.113.77; FileNames=update_service.exe,winlog_service.dll,mscore_update.bin; RegistryKeys=HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run,HKLM\\System\\Services\\FakeService; Mutex=Global\\A1B2C3D4E5F6G7H8; YARA Matches=[rule1,rule2,rule3]. [SEG-C-END] EndOfExtraInfo") From a05d0c19c8b89a16bff2a1ecc5360111c8908849 Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Mon, 29 Jun 2026 11:01:59 +0800 Subject: [PATCH 03/13] fix oml & mixed --- benchmark/models/oml/nginx.oml | 4 ++-- benchmark/models/wpl/mixed/sample.dat | 5 +---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/benchmark/models/oml/nginx.oml b/benchmark/models/oml/nginx.oml index 383facd4..f25932e2 100644 --- a/benchmark/models/oml/nginx.oml +++ b/benchmark/models/oml/nginx.oml @@ -1,6 +1,6 @@ name : /oml/normal/nginx rule : /nginx/* -enable : false +enable : true --- size : digit = take(size); status : digit = take(status); @@ -12,4 +12,4 @@ match_chars = match read(option:[wp_src_ip]) { ip(127.0.0.1) => chars(localhost); !ip(127.0.0.1) => chars(attack_ip); }; -* : auto = take(); +* : auto = read(); diff --git a/benchmark/models/wpl/mixed/sample.dat b/benchmark/models/wpl/mixed/sample.dat index b551aff5..bc95020f 100644 --- a/benchmark/models/wpl/mixed/sample.dat +++ b/benchmark/models/wpl/mixed/sample.dat @@ -1,10 +1,7 @@ 180.57.30.148 - - [21/Jan/2025:01:40:02 +0800] "GET /nginx-logo.png HTTP/1.1" 500 368 "http://207.131.38.110/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-" 180.57.30.148 - - [21/Jan/2025:01:40:02 +0800] "GET /nginx-logo.png HTTP/1.1" 500 368 "http://207.131.38.110/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-" +180.57.30.148 - - [21/Jan/2025:01:40:02 +0800] "GET /nginx-logo.png HTTP/1.1" 500 368 "http://207.131.38.110/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-" http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 -http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 -http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 -http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 -2018-01-30 13:12:21 Security +01:00 Block: type=FWD|action=BLOCK|proto=UDP|ipVersion=4|srcIF=eth0|srcZone=LAN|srcIP=10.17.34.12|srcPort=54915|srcMAC=18:db:f2:13:ca:9c|srcNAT=0.0.0.0|srcCountry=CN|srcASN=4134|dstIF=eth1|dstZone=WAN|dstIP=10.17.34.255|dstPort=54915|dstService=custom_udp|dstNAT=0.0.0.0|dstCountry=US|dstASN=15169|rule=BLOCKALL|ruleType=FirewallPolicy|policyId=policy_10234|policyGroup=corp_default|interfaceGroup=internal_to_external|routingTable=main|connState=NEW|sessionId=843920184|sessionDuration=0|receivedPackets=0|sentPackets=0|receivedBytes=0|sentBytes=0|packetCount=1|byteCount=60|tcpFlags=|icmpType=|icmpCode=|application=unknown|applicationRisk=0|applicationCategory=unclassified|protocolDetection=enabled|detectedProtocol=udp_generic|user=john.doe|userGroup=employees|authMethod=ldap|vpnType=none|vpnTunnelId=0|contentProfile=default|contentAction=none|url=http://example.com/resource|urlCategory=uncategorized|threatLevel=0|threatName=none|signatureId=0|signatureVersion=0|limitProfile=default|rateLimitPps=1200|rateLimitBps=768000|logSource=box_firewall_activity|logType=activity|logVersion=1 2018-01-30 13:12:21 Security +01:00 Block: type=FWD|action=BLOCK|proto=UDP|ipVersion=4|srcIF=eth0|srcZone=LAN|srcIP=10.17.34.12|srcPort=54915|srcMAC=18:db:f2:13:ca:9c|srcNAT=0.0.0.0|srcCountry=CN|srcASN=4134|dstIF=eth1|dstZone=WAN|dstIP=10.17.34.255|dstPort=54915|dstService=custom_udp|dstNAT=0.0.0.0|dstCountry=US|dstASN=15169|rule=BLOCKALL|ruleType=FirewallPolicy|policyId=policy_10234|policyGroup=corp_default|interfaceGroup=internal_to_external|routingTable=main|connState=NEW|sessionId=843920184|sessionDuration=0|receivedPackets=0|sentPackets=0|receivedBytes=0|sentBytes=0|packetCount=1|byteCount=60|tcpFlags=|icmpType=|icmpCode=|application=unknown|applicationRisk=0|applicationCategory=unclassified|protocolDetection=enabled|detectedProtocol=udp_generic|user=john.doe|userGroup=employees|authMethod=ldap|vpnType=none|vpnTunnelId=0|contentProfile=default|contentAction=none|url=http://example.com/resource|urlCategory=uncategorized|threatLevel=0|threatName=none|signatureId=0|signatureVersion=0|limitProfile=default|rateLimitPps=1200|rateLimitBps=768000|logSource=box_firewall_activity|logType=activity|logVersion=1 #Feb 7 2025 15:07:18+08:00 USG1000E %%01ANTI-APT/4/ANTI-APT(l)[29]: An advanced persistent threat was detected. (SyslogId=1, VSys="public-long-virtual-system-name-for-testing-extra-large-value-to-simulate-enterprise-scenario", Policy="trust-untrust-high-risk-policy-with-deep-inspection-and-layer7-protection-enabled-for-advanced-threat-detection", SrcIp=192.168.1.123, DstIp=182.150.63.102, SrcPort=51784, DstPort=10781, SrcZone=trust-zone-with-multiple-segments-for-internal-security-domains-and-access-control, DstZone=untrust-wide-area-network-zone-with-external-facing-interfaces-and-honeynet-integration, User="unknown-long-user-field-used-for-simulation-purpose-with-extra-description-and-tags-[tag1][tag2][tag3]-to-reach-required-size", Protocol=TCP, Application="HTTP-long-application-signature-identification-with-multiple-behavior-patterns-and-deep-packet-inspection-enabled", Profile="IPS_default_advanced_extended_profile_with_ml_detection-long", Direction=aaa-long-direction-field-used-to-extend-size-with-additional-info-about-traffic-orientation-from-client-to-server, ThreatType=File Reputation with additional descriptive context of multi-layer analysis engine including sandbox-behavioral-signature-ml-static-analysis-and-network-correlation-modules-working-together, ThreatName=bbb-advanced-threat-campaign-with-code-name-operation-shadow-storm-and-related-IOCs-collected-over-multiple-incidents-in-the-wild-attached-metadata-[phase1][phase2][phase3], Action=ccc-block-and-alert-with-deep-scan-followed-by-quarantine-and-forensic-dump-generation-for-further-investigation, FileType=ddd-executable-binary-with-multiple-packed-layers-suspicious-import-table-behavior-and-evasion-techniques, Hash=eee1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef-long-hash-value-used-for-testing-purpose-extended-with-multiple-hash-representations-[MD5:aaa111bbb222ccc333]-[SHA1:bbb222ccc333ddd444]-[SHA256:ccc333ddd444eee555]-[SSDEEP:ddd444eee555fff666]-end-of-hash-section, ExtraInfo="This is additional extended information purposely added to inflate the total log size for stress testing of log ingestion engines such as Vector, Fluent Bit, self-developed ETL pipelines, and any high-throughput log processing systems. It contains repeated segments to simulate realistic verbose threat intelligence attachment blocks. [SEG-A-BEGIN] The threat was part of a coordinated multi-vector campaign observed across various geographic regions targeting enterprise networks with spear-phishing, watering-hole attacks, and supply-chain compromise vectors. Enriched indicators include C2 domains, malware families, behavioral clusters, sandbox detonation traces, and network telemetry correlation. [SEG-A-END] [SEG-B-BEGIN] Further analysis revealed that the payload exhibited persistence techniques including registry autoruns, scheduled tasks, masquerading, process injection, and lateral movement attempts leveraging remote service creation and stolen credentials. The binary contains multiple obfuscation layers, anti-debugging, anti-VM checks, and unusual API call sequences. [SEG-B-END] [SEG-C-BEGIN] IOC Bundle: Domains=malicious-domain-example-01.com,malicious-domain-example-02.net,malicious-update-service.info; IPs=103.21.244.0,198.51.100.55,203.0.113.77; FileNames=update_service.exe,winlog_service.dll,mscore_update.bin; RegistryKeys=HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run,HKLM\\System\\Services\\FakeService; Mutex=Global\\A1B2C3D4E5F6G7H8; YARA Matches=[rule1,rule2,rule3]. [SEG-C-END] EndOfExtraInfo") From 53d7a5fce459af9319146a49610beb80b7a7aa8b Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Mon, 29 Jun 2026 11:06:28 +0800 Subject: [PATCH 04/13] add linux-monitor --- benchmark/monitor_linux .sh | 168 ++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 benchmark/monitor_linux .sh diff --git a/benchmark/monitor_linux .sh b/benchmark/monitor_linux .sh new file mode 100644 index 00000000..c40c6af8 --- /dev/null +++ b/benchmark/monitor_linux .sh @@ -0,0 +1,168 @@ +#!/bin/bash +# monitor.sh (v6 - 仅 CPU/内存均值与峰值) +# 保留核心功能:监控指定进程的 CPU 与内存,输出平均值和峰值。 +show_help() { + cat << EOF +用法: $0 <进程名> [监控间隔] [总时长] [输出文件] + +参数说明: + 进程名 必填,要监控的进程名称 (例如 vector, wpflow) + 监控间隔 采样间隔秒数 (默认: 1 秒) + 总时长 监控总时长秒数 (默认: 30 秒) + 输出文件 监控结果保存路径 (默认: monitoring_report.txt) + +示例: + $0 vector + # 监控 vector 进程,间隔 1 秒,总时长 30 秒 + + $0 wpflow 2 60 wpflow_report.txt + # 监控 wpflow 进程,间隔 2 秒,总时长 60 秒,结果保存到 wpflow_report.txt +EOF +} + +# --- 如果传 -h 或 --help 就打印帮助并退出 --- +if [[ "$1" == "-h" || "$1" == "--help" ]]; then + show_help + exit 0 +fi + +# --- 参数解析(带默认值) --- +PROCESS_NAME=${1} +INTERVAL=${2:-1} +DURATION=${3:-30} +OUTFILE=${4:-"monitoring_report.txt"} + +if [ -z "$PROCESS_NAME" ]; then + echo "错误: 必须提供要监控的进程名作为第一个参数。" >&2 + echo "使用 $0 --help 查看帮助。" >&2 + exit 1 +fi + +echo "--- [1/3] 正在查找进程 '$PROCESS_NAME' ---" + +# 确保 pidstat 可用;若缺失则尝试安装(需具备相应权限) +if ! command -v pidstat >/dev/null 2>&1; then + echo "未找到 pidstat,尝试安装..." + if command -v apt-get >/dev/null 2>&1; then + sudo apt-get update && sudo apt-get install -y sysstat + elif command -v yum >/dev/null 2>&1; then + sudo yum install -y sysstat + elif command -v dnf >/dev/null 2>&1; then + sudo dnf install -y sysstat + elif command -v zypper >/dev/null 2>&1; then + sudo zypper install -y sysstat + elif command -v pacman >/dev/null 2>&1; then + sudo pacman -Sy --noconfirm sysstat + else + echo "无法自动安装 pidstat,请手动安装 sysstat 包后重试。" >&2 + exit 1 + fi + + if ! command -v pidstat >/dev/null 2>&1; then + echo "自动安装 pidstat 失败,请手动安装 sysstat 包后重试。" >&2 + exit 1 + fi + echo "pidstat 已安装。" +fi + +PIDS=$(pgrep -x "$PROCESS_NAME") + +if [ -z "$PIDS" ]; then + echo "错误: 找不到正在运行的 '$PROCESS_NAME' 进程。" >&2 + exit 1 +fi + +pid_count=$(echo "$PIDS" | wc -l | xargs) +if [ "$pid_count" -gt 1 ]; then + echo "⚠️ 发现多个 '$PROCESS_NAME' 进程,请选择一个:" + select pid in $PIDS; do + if [ -n "$pid" ]; then + break + fi + done +else + pid=$PIDS +fi + +echo "✅ 成功找到进程,PID: $pid" +echo "----------------------------------" + +# --- 2. 执行监控 --- +echo "--- [2/3] 开始监控 ---" +echo "监控进程名: $PROCESS_NAME" +echo "监控 PID: $pid" +echo "采样间隔: $INTERVAL 秒" +echo "总时长: $DURATION 秒" +echo "结果将写入: $OUTFILE" +echo "----------------------------------" + +cpu_sum=0 +cpu_max=0 +mem_sum=0 +mem_max=0 +count=0 + +start_time=$(date +%s) +end_time=$((start_time + DURATION)) + +> "$OUTFILE" + +while [ "$(date +%s)" -lt "$end_time" ]; do + if ! ps -p "$pid" > /dev/null; then + echo "⚠️ 目标进程 PID '$pid' 已退出,监控提前结束。" >&2 + break + fi + + read -r cpu mem_kb < <(pidstat -u -r -p "$pid" 1 1 | awk ' + /%CPU/ { getline; cpu_val=$8 } + /RSS/ { getline; mem_val=$7 } + END { if (cpu_val == "") cpu_val="N/A"; if (mem_val == "") mem_val="N/A"; print cpu_val, mem_val } + ') + + if [[ "$cpu" =~ ^[0-9]+([.][0-9]+)?$ && "$mem_kb" =~ ^[0-9]+([.][0-9]+)?$ ]]; then + mem_mb=$(awk "BEGIN {print $mem_kb / 1024}") + printf "实时: CPU %5.1f%% | Mem %8.2f MB\n" "$cpu" "$mem_mb" + + cpu_sum=$(awk "BEGIN {print $cpu_sum + $cpu}") + mem_sum=$(awk "BEGIN {print $mem_sum + $mem_mb}") + + cpu_max=$(awk "BEGIN {print ($cpu > $cpu_max) ? $cpu : $cpu_max}") + mem_max=$(awk "BEGIN {print ($mem_mb > $mem_max) ? $mem_mb : $mem_max}") + + count=$((count + 1)) + else + echo "⚠️ 无法从 pidstat 输出中获取有效数据。CPU='$cpu', Mem='$mem_kb'" >&2 + fi + + sleep "$INTERVAL" +done + +echo "----------------------------------" +echo "--- [3/3] 生成监控报告 ---" + +if [ $count -eq 0 ]; then + echo "❌ 错误: 没有采集到任何有效数据。" >&2 + exit 1 +fi + +cpu_avg=$(awk "BEGIN {print $cpu_sum/$count}") +mem_avg=$(awk "BEGIN {print $mem_sum/$count}") + +{ + echo "========== 性能监控汇总 ==========" + echo "监控时间: $(date)" + echo "进程名: $PROCESS_NAME" + echo "PID: $pid" + echo "采样次数: $count 次" + echo "------------------------------------" + printf "平均 CPU 使用率: %.2f %%\n" "$cpu_avg" + printf "峰值 CPU 使用率: %.2f %%\n" "$cpu_max" + echo "------------------------------------" + printf "平均内存使用 (RSS): %.2f MB\n" "$mem_avg" + printf "峰值内存使用 (RSS): %.2f MB\n" "$mem_max" + echo "====================================" +} > "$OUTFILE" + +echo "✅ 监控结束,汇总报告已保存到: $OUTFILE" +echo +cat "$OUTFILE" From 42a42497077c8248b7c9f38163a591b90c36410d Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Fri, 3 Jul 2026 14:35:35 +0800 Subject: [PATCH 05/13] update report --- benchmark/monitor_linux .sh | 168 ------- benchmark/report/report_linux.md | 779 ++++++++++++++----------------- benchmark/report/report_mac.md | 372 ++++++--------- 3 files changed, 478 insertions(+), 841 deletions(-) delete mode 100644 benchmark/monitor_linux .sh diff --git a/benchmark/monitor_linux .sh b/benchmark/monitor_linux .sh deleted file mode 100644 index c40c6af8..00000000 --- a/benchmark/monitor_linux .sh +++ /dev/null @@ -1,168 +0,0 @@ -#!/bin/bash -# monitor.sh (v6 - 仅 CPU/内存均值与峰值) -# 保留核心功能:监控指定进程的 CPU 与内存,输出平均值和峰值。 -show_help() { - cat << EOF -用法: $0 <进程名> [监控间隔] [总时长] [输出文件] - -参数说明: - 进程名 必填,要监控的进程名称 (例如 vector, wpflow) - 监控间隔 采样间隔秒数 (默认: 1 秒) - 总时长 监控总时长秒数 (默认: 30 秒) - 输出文件 监控结果保存路径 (默认: monitoring_report.txt) - -示例: - $0 vector - # 监控 vector 进程,间隔 1 秒,总时长 30 秒 - - $0 wpflow 2 60 wpflow_report.txt - # 监控 wpflow 进程,间隔 2 秒,总时长 60 秒,结果保存到 wpflow_report.txt -EOF -} - -# --- 如果传 -h 或 --help 就打印帮助并退出 --- -if [[ "$1" == "-h" || "$1" == "--help" ]]; then - show_help - exit 0 -fi - -# --- 参数解析(带默认值) --- -PROCESS_NAME=${1} -INTERVAL=${2:-1} -DURATION=${3:-30} -OUTFILE=${4:-"monitoring_report.txt"} - -if [ -z "$PROCESS_NAME" ]; then - echo "错误: 必须提供要监控的进程名作为第一个参数。" >&2 - echo "使用 $0 --help 查看帮助。" >&2 - exit 1 -fi - -echo "--- [1/3] 正在查找进程 '$PROCESS_NAME' ---" - -# 确保 pidstat 可用;若缺失则尝试安装(需具备相应权限) -if ! command -v pidstat >/dev/null 2>&1; then - echo "未找到 pidstat,尝试安装..." - if command -v apt-get >/dev/null 2>&1; then - sudo apt-get update && sudo apt-get install -y sysstat - elif command -v yum >/dev/null 2>&1; then - sudo yum install -y sysstat - elif command -v dnf >/dev/null 2>&1; then - sudo dnf install -y sysstat - elif command -v zypper >/dev/null 2>&1; then - sudo zypper install -y sysstat - elif command -v pacman >/dev/null 2>&1; then - sudo pacman -Sy --noconfirm sysstat - else - echo "无法自动安装 pidstat,请手动安装 sysstat 包后重试。" >&2 - exit 1 - fi - - if ! command -v pidstat >/dev/null 2>&1; then - echo "自动安装 pidstat 失败,请手动安装 sysstat 包后重试。" >&2 - exit 1 - fi - echo "pidstat 已安装。" -fi - -PIDS=$(pgrep -x "$PROCESS_NAME") - -if [ -z "$PIDS" ]; then - echo "错误: 找不到正在运行的 '$PROCESS_NAME' 进程。" >&2 - exit 1 -fi - -pid_count=$(echo "$PIDS" | wc -l | xargs) -if [ "$pid_count" -gt 1 ]; then - echo "⚠️ 发现多个 '$PROCESS_NAME' 进程,请选择一个:" - select pid in $PIDS; do - if [ -n "$pid" ]; then - break - fi - done -else - pid=$PIDS -fi - -echo "✅ 成功找到进程,PID: $pid" -echo "----------------------------------" - -# --- 2. 执行监控 --- -echo "--- [2/3] 开始监控 ---" -echo "监控进程名: $PROCESS_NAME" -echo "监控 PID: $pid" -echo "采样间隔: $INTERVAL 秒" -echo "总时长: $DURATION 秒" -echo "结果将写入: $OUTFILE" -echo "----------------------------------" - -cpu_sum=0 -cpu_max=0 -mem_sum=0 -mem_max=0 -count=0 - -start_time=$(date +%s) -end_time=$((start_time + DURATION)) - -> "$OUTFILE" - -while [ "$(date +%s)" -lt "$end_time" ]; do - if ! ps -p "$pid" > /dev/null; then - echo "⚠️ 目标进程 PID '$pid' 已退出,监控提前结束。" >&2 - break - fi - - read -r cpu mem_kb < <(pidstat -u -r -p "$pid" 1 1 | awk ' - /%CPU/ { getline; cpu_val=$8 } - /RSS/ { getline; mem_val=$7 } - END { if (cpu_val == "") cpu_val="N/A"; if (mem_val == "") mem_val="N/A"; print cpu_val, mem_val } - ') - - if [[ "$cpu" =~ ^[0-9]+([.][0-9]+)?$ && "$mem_kb" =~ ^[0-9]+([.][0-9]+)?$ ]]; then - mem_mb=$(awk "BEGIN {print $mem_kb / 1024}") - printf "实时: CPU %5.1f%% | Mem %8.2f MB\n" "$cpu" "$mem_mb" - - cpu_sum=$(awk "BEGIN {print $cpu_sum + $cpu}") - mem_sum=$(awk "BEGIN {print $mem_sum + $mem_mb}") - - cpu_max=$(awk "BEGIN {print ($cpu > $cpu_max) ? $cpu : $cpu_max}") - mem_max=$(awk "BEGIN {print ($mem_mb > $mem_max) ? $mem_mb : $mem_max}") - - count=$((count + 1)) - else - echo "⚠️ 无法从 pidstat 输出中获取有效数据。CPU='$cpu', Mem='$mem_kb'" >&2 - fi - - sleep "$INTERVAL" -done - -echo "----------------------------------" -echo "--- [3/3] 生成监控报告 ---" - -if [ $count -eq 0 ]; then - echo "❌ 错误: 没有采集到任何有效数据。" >&2 - exit 1 -fi - -cpu_avg=$(awk "BEGIN {print $cpu_sum/$count}") -mem_avg=$(awk "BEGIN {print $mem_sum/$count}") - -{ - echo "========== 性能监控汇总 ==========" - echo "监控时间: $(date)" - echo "进程名: $PROCESS_NAME" - echo "PID: $pid" - echo "采样次数: $count 次" - echo "------------------------------------" - printf "平均 CPU 使用率: %.2f %%\n" "$cpu_avg" - printf "峰值 CPU 使用率: %.2f %%\n" "$cpu_max" - echo "------------------------------------" - printf "平均内存使用 (RSS): %.2f MB\n" "$mem_avg" - printf "峰值内存使用 (RSS): %.2f MB\n" "$mem_max" - echo "====================================" -} > "$OUTFILE" - -echo "✅ 监控结束,汇总报告已保存到: $OUTFILE" -echo -cat "$OUTFILE" diff --git a/benchmark/report/report_linux.md b/benchmark/report/report_linux.md index db6845a2..01dd7adc 100644 --- a/benchmark/report/report_linux.md +++ b/benchmark/report/report_linux.md @@ -1,479 +1,383 @@ # WarpParse、Vector、Logstash 性能基准测试报告 -## 1. 技术概述与测试背景 + ## 1. 技术概述与测试背景 -### 1.1 测试背景 + ### 1.1 测试背景 -本报告记录在 Linux 平台完成的单机基准测试结果,覆盖从轻量级 Web 日志到复杂安全威胁日志的典型场景,用于形成阶段性 benchmark 基线,便于后续版本或方案之间的横向与纵向对比。本文仅描述测试方法与结果,不对生产环境性能上限作外推。 + 本报告记录在 Linux 平台完成的单机基准测试结果,覆盖从轻量级 Web 日志到复杂安全威胁日志的典型场景,用于形成阶段性 benchmark 基线,便于后续版本或方案之间的横向与纵向对比。本文仅描述测试方法与结果,不对生产环境性能上限作外推。 -### 1.2 被测对象 + ### 1.2 被测对象 -* **WarpParse**: 大禹安全公司研发的 ETL 核心引擎,采用 Rust 构建。 -* **Vector**: 开源可观测性数据管道工具,采用 Rust 构建。 - * Vector-VRL:基于 VRL 的 `parse_regex` 进行正则解析。 - * Vector-Fixed:尽量使用内置解析(如 nginx/aws 内置函数;sysmon 直接 JSON 解析;APT 无专用手段仍使用正则)。 -* **Logstash**: Elastic 生态的日志处理引擎,采用 JVM 运行时。 + * **WarpParse**: 大禹安全公司研发的 ETL 核心引擎,采用 Rust 构建。 + * **Vector**: 开源可观测性数据管道工具,采用 Rust 构建。 + * Vector-VRL:基于 VRL 的 `parse_regex` 进行正则解析。 + * Vector-Fixed:尽量使用内置解析(如 nginx/aws 内置函数;sysmon 直接 JSON 解析;APT 无专用手段仍使用正则)。 + * **Logstash**: Elastic 生态的日志处理引擎,采用 JVM 运行时。 -### 1.3 测试对象与版本说明 + ### 1.3 测试对象与版本说明 -本次测试使用版本如下: + 本次测试使用版本如下: -* **WarpParse**:0.12.0 -* **Vector**:0.49.0 -* **Logstash**:9.2.3 + * **WarpParse**:0.24.12 -构建与来源信息: +* **Vector**:0.54.0 -* **WarpParse**:构建来源/commit/tag = GitHub tag v0.12.0-alpha (commit: 2ba6e55);构建参数 = 官方 release 构建产物(zip/tar.gz),未修改构建选项 -* **Vector**:构建来源/commit/tag = v0.49.0 (commit: dc7e792);构建参数 = 官方发布的 release 二进制,未修改构建选项 -* **Logstash**:构建来源/commit/tag = GitHub tag v9.2.3 (commit: 4eb0f3f);构建参数 = 官方发行包(zip / tar.gz,bundled JDK),未进行源码级构建 + 构建与来源信息: -本报告已记录版本与构建来源;复现时仍需确保引擎运行参数、系统配置与数据集参数一致。 + * **WarpParse**:构建来源/commit/tag = GitHub tag v0.24.12-beta (commit: 2ba6e55);构建参数 = 官方 release 构建产物(zip/tar.gz),未修改构建选项 + * **Vector**:构建来源/commit/tag = v0.54.0 (commit: dc7e792);构建参数 = 官方发布的 release 二进制,未修改构建选项 -### 1.4 报告定位 + 本报告已记录版本与构建来源;复现时仍需确保引擎运行参数、系统配置与数据集参数一致。 -本文档定位为阶段性 benchmark 报告,侧重方法与数据的可复现性与长期可比性,不作为最终性能结论或生产容量承诺。 + ### 1.4 报告定位 + 本文档定位为阶段性 benchmark 报告,侧重方法与数据的可复现性与长期可比性,不作为最终性能结论或生产容量承诺。 -## 2. 测试环境与方法 -### 2.1 测试环境(Test Environment) + ## 2. 测试环境与方法 -#### 平台信息(Platform) -- **平台类型**:AWS EC2 -- **实例规格(Instance Type)**:c5a.2xlarge -- **操作系统**:Ubuntu 24.04 LTS -- **系统架构**:x86_64 -- 网络环境:本机回环(127.0.0.1,Loopback) + ### 2.1 测试环境(Test Environment) -#### 计算资源(Compute) -- **CPU**:8 vCPU -- **CPU 型号**:AMD EPYC 7R32 -- **内存**:16 GiB + #### 平台信息(Platform) -#### 存储配置(Storage) -- **存储类型**:Amazon EBS -- **卷类型**:通用型 SSD(gp3) -- **卷大小**:128 GiB -- **IOPS**:30,000 -- **吞吐量**:200 MiB/s + - **平台类型**:AWS EC2 + - **实例规格(Instance Type)**:c5a.4xlarge + - **操作系统**:Ubuntu 24.04 LTS + - **系统架构**:x86_64 + - 网络环境:本机回环(127.0.0.1,Loopback) -#### 说明(Notes) -- gp3 卷支持 IOPS 与吞吐量独立配置,用于避免容量与性能强绑定 -- 当前配置提供较高的随机 I/O 能力(IOPS),并具备中等顺序 I/O 吞吐能力 -- 网络带宽/网卡能力: - - 本报告中的 TCP 场景均基于本机 loopback(127.0.0.1)进行数据发送与接收; - - 测试流量不经过物理网卡或云实例网络链路,不受实例网络带宽或 ENI 性能限制; - - TCP 场景主要反映内核 TCP 协议栈开销与引擎自身的解析、调度与 I/O 处理能力。 + #### 计算资源(Compute) -### 2.2 测试范畴 (Scope) + - **CPU**:16 vCPU + - **CPU 型号**:AMD EPYC 7R32 + - **内存**:32 GiB -* **日志类型**: - * **Nginx Access Log** (239B): 典型 Web 访问日志,高吞吐场景。 - * **AWS ELB Log** (411B): 云设施负载均衡日志,中等复杂度。 - * **Firewall Log** (1K): 终端安全监控日志,JSON 结构,字段较多。 - * **APT Threat Log** (3K): 模拟的高级持续性威胁日志,大体积、长文本。 - * **Mixed Log** (886B): 上述四类日志混合形成的日志类型。 -* **数据拓扑**: - * **File -> BlackHole**: 测算引擎极限 I/O 读取与处理能力 (基准)。 - * **TCP -> BlackHole**: 测算网络接收与处理能力。 - * **TCP -> File**: 测算端到端完整落地能力。 -* **测试能力**: - * **解析 (Parse)**: 仅进行正则提取/KV解析与字段标准化。 - * **解析+转换 (Parse+Transform)**: 在解析基础上增加字段映射、富化、类型转换等逻辑。 + #### 存储配置(Storage) -### 2.3 评估指标 + - **存储类型**:Amazon EBS + - **卷类型**:通用型 SSD(gp3) + - **卷大小**:128 GiB + - **IOPS**:30,000 + - **吞吐量**:200 MiB/s -* **EPS (Events Per Second)**: 每秒处理事件数(核心吞吐指标)。 -* **MPS (MiB/s)**: 每秒处理数据量。 -* **CPU (Avg/Peak)**: 测试进程 CPU 使用率的平均值与峰值。 -* **MEM (Avg/Peak)**: 测试进程内存占用的平均值与峰值。 -* **Rule Size**: 规则配置文件体积,评估分发与维护成本。 -* **性能倍数**: 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 为 1.0x 进行归一化。 + #### 说明(Notes) -说明: -* CPU 为多核累计百分比(例如 800% ≈ 8 个逻辑核满载),统计对象为**测试进程本身**(非系统总 CPU),由外部监控脚本按固定采样周期采集并计算 Avg/Peak。 -* MPS 换算公式:**MPS = EPS × AvgLogSize(B) / 1024 / 1024**。 + - gp3 卷支持 IOPS 与吞吐量独立配置,用于避免容量与性能强绑定 + - 当前配置提供较高的随机 I/O 能力(IOPS),并具备中等顺序 I/O 吞吐能力 + - 网络带宽/网卡能力: + - 本报告中的 TCP 场景均基于本机 loopback(127.0.0.1)进行数据发送与接收; + - 测试流量不经过物理网卡或云实例网络链路,不受实例网络带宽或 ENI 性能限制; + - TCP 场景主要反映内核 TCP 协议栈开销与引擎自身的解析、调度与 I/O 处理能力。 -- 采样来源与采样口径说明: - - EPS:统一基于各引擎原生可观测性或统计接口获取。 - - WarpParse / Vector:使用引擎内置的吞吐统计能力。 - - Logstash:通过自动化脚本定期采集其官方 Monitoring API / 运行时统计信息。 - - CPU / MEM:通过外部监控脚本采集测试进程的资源使用情况(基于 shell 的周期性采样),用于跨引擎对比。 - - MPS:基于测得的 EPS 与对应日志的平均大小进行换算计算,用于辅助衡量实际数据吞吐规模。 - - 规则大小统计前对配置进行了统一去注释/去空行处理,仅保留有效表达部分,降低格式差异影响。 - - 各指标在不同引擎中的采集实现方式可能不同,但统计口径保持一致,结果以各指标最权威来源为准。 + ### 2.2 测试范畴 (Scope) -### 2.4 测试方法与执行方式 + * **日志类型**: + * **Nginx Access Log** (239B): 典型 Web 访问日志,高吞吐场景。 + * **AWS ELB Log** (411B): 云设施负载均衡日志,中等复杂度。 + * **Firewall Log** (1K): 终端安全监控日志,JSON 结构,字段较多。 + * **APT Threat Log** (3K): 模拟的高级持续性威胁日志,大体积、长文本。 + * **Mixed Log** (886B): 上述四类日志混合形成的日志类型。 + * **数据拓扑**: + * **TCP -> BlackHole**: 测算网络接收与处理能力。 + * **测试能力**: + * **解析 (Parse)**: 仅进行正则提取/KV解析与字段标准化。 + * **解析+转换 (Parse+Transform)**: 在解析基础上增加字段映射、富化、类型转换等逻辑。 -测试在单机环境中按日志类型与拓扑逐项执行。输入数据由本仓库提供的 benchmark 脚本生成或回放, -测试过程中各引擎独立运行,避免相互干扰。 -输出目标根据测试拓扑配置为 BlackHole 或 File,以分别评估纯处理能力与包含 I/O 的端到端性能。 + ### 2.3 评估指标 -测试执行流程、脚本入口及通用参数说明见 benchmark/README.md。 + * **EPS (Events Per Second)**: 每秒处理事件数(核心吞吐指标)。 + * **MPS (MiB/s)**: 每秒处理数据量。 + * **CPU (Avg/Peak)**: 测试进程 CPU 使用率的平均值与峰值。 + * **MEM (Avg/Peak)**: 测试进程内存占用的平均值与峰值。 + * **Rule Size**: 规则配置文件体积,评估分发与维护成本。 + * **性能倍数**: 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 为 1.0x 进行归一化。 + + 说明: + + * CPU 为多核累计百分比(例如 800% ≈ 8 个逻辑核满载),统计对象为**测试进程本身**(非系统总 CPU),由外部监控脚本按固定采样周期采集并计算 Avg/Peak。 + * MPS 换算公式:**MPS = EPS × AvgLogSize(B) / 1024 / 1024**。 + + - 采样来源与采样口径说明: + - EPS:统一基于各引擎原生可观测性或统计接口获取。 + - WarpParse / Vector:使用引擎内置的吞吐统计能力。 + - Logstash:通过自动化脚本定期采集其官方 Monitoring API / 运行时统计信息。 + - CPU / MEM:通过外部监控脚本采集测试进程的资源使用情况(基于 shell 的周期性采样),用于跨引擎对比。 + - MPS:基于测得的 EPS 与对应日志的平均大小进行换算计算,用于辅助衡量实际数据吞吐规模。 + - 规则大小统计前对配置进行了统一去注释/去空行处理,仅保留有效表达部分,降低格式差异影响。 + - 各指标在不同引擎中的采集实现方式可能不同,但统计口径保持一致,结果以各指标最权威来源为准。 + + ### 2.4 测试方法与执行方式 + + 测试在单机环境中按日志类型与拓扑逐项执行。输入数据由本仓库提供的 benchmark 脚本生成或回放, + 测试过程中各引擎独立运行,避免相互干扰。 + 输出目标根据测试拓扑配置为 BlackHole 或 File,以分别评估纯处理能力与包含 I/O 的端到端性能。 + + 测试执行流程、脚本入口及通用参数说明见 benchmark/README.md。 ### 2.4.1 最小复现清单(Minimal Repro Checklist) - 引擎版本与来源: - - WarpParse / Vector / Logstash 的版本、tag、commit 及构建方式见 1.3。 + + - WarpParse / Vector 的版本、tag、commit 及构建方式见 1.3。 - Benchmark 工具链版本: + - benchmark 仓库以 wp-example 仓库的最新提交(repo HEAD)为准。 - 复现实验时建议记录具体 commit hash 以保证结果可追溯。 - 数据规模与事件数量: + - 本报告中“数据集规模”与“事件数量”为同一概念,均以处理的事件总数作为规模定义。 - 在 WarpParse 的 benchmark 执行脚本中,通过参数 `-c` 指定事件总数; 该参数用于明确数据集规模,但并非要求所有引擎具备相同参数形式。 - - 对于 Vector 与 Logstash,测试数据集规模与 WarpParse 使用相同的事件数量, - 通过等量输入数据实现规模对齐,而非依赖统一的启动参数。 - 因此,`-c` 可视为本 benchmark 中“统一事件规模定义”的符号化表示, 而非跨引擎通用的命令行参数。 - 结束条件: + - 所有测试均以处理完成等量事件作为结束条件。 - 不采用按固定运行时长结束的方式, 以避免不同引擎在启动、预热与稳定阶段差异带来的统计偏差。 - Warmup 与采样窗口: - - WarpParse 与 Vector:引擎启动后快速进入稳定状态,未单独区分 warmup 阶段。 - - Logstash:由于 JVM/JIT 与 pipeline 初始化特性,测试前先进行 warmup 运行; - 在确认吞吐进入稳定区间后,开始采集 EPS / 资源指标。 + - WarpParse 与 Vector:引擎启动后快速进入稳定状态,未单独区分 warmup 阶段。 - 重复次数与取值规则: - 默认单次运行。 - 如需更严格统计,建议重复 N=3 次并取 median 作为最终结果。 -### 2.5 默认配置与调优说明 - -除非表格或备注中明确说明,本报告结果基于各引擎默认配置,未开启专项性能调优或非默认参数。 - -## 3. 详细吞吐量性能对比分析 - -### 3.0 测试结果汇总表 - -下表为结果索引,用于定位不同日志类型与测试能力的明细表格。 - -| 日志类型 | 解析(Parse Only) | 解析 + 转换(Parse + Transform) | -| :-- | :-- | :-- | -| Nginx Access Log (239B) | 见 3.1.1 | 见 3.2.1 | -| AWS ELB Log (411B) | 见 3.1.2 | 见 3.2.2 | -| Firewall Log (1K) | 见 3.1.3 | 见 3.2.3 | -| APT Threat Log (3K) | 见 3.1.4 | 见 3.2.4 | -| Mixed Log (平均日志大小:867B) | 见 3.1.5 | 见 3.2.5 | - -### 3.1 日志解析能力 (Parse Only) -本节给出纯解析场景的测试结果。 - -#### 3.1.1 Nginx Access Log (239B) - -表 3.1.1-1:Nginx Access Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **810,100** | 184.65 | 626% / 639% | 115 MB / 314 MB | **3.83x** | -| Vector-VRL | File -> BlackHole | 211,250 | 48.15 | 292% / 305% | 148 MB / 153 MB | 1.0x | -| Vector-Fixed | File -> BlackHole | 170,666 | 38.90 | 431% / 451% | 141 MB / 151 MB | 0.81x | -| Logstash | File -> BlackHole | 106,382 | 24.25 | 436% / 461% | 1144 MB / 1175 MB | 0.50x | -| **WarpParse** | TCP -> BlackHole | **765,800** | 174.55 | 574% / 628% | 245 MB / 366 MB | **1.56x** | -| Vector-VRL | TCP -> BlackHole | 492,200 | 112.19 | 501% / 510% | 155 MB / 159 MB | 1.0x | -| Vector-Fixed | TCP -> BlackHole | 255,500 | 58.24 | 480% / 533% | 138 MB / 145 MB | 0.52x | -| Logstash | TCP -> BlackHole | 161,290 | 36.76 | 462% / 475% | 1174 MB / 1224 MB | 0.33x | -| **WarpParse** | TCP -> File | **377,600** | 86.07 | 645% / 673% | 221 MB / 444 MB | **20.30x** | -| Vector-VRL | TCP -> File | 18,600 | 4.24 | 133% / 135% | 122 MB / 126 MB | 1.0x | -| Vector-Fixed | TCP -> File | 17,300 | 3.94 | 148% / 156% | 115 MB / 119 MB | 0.93x | -| Logstash | TCP -> File | 147,058 | 33.52 | 465% / 476% | 1148 MB / 1186 MB | 7.91x | - -> 解析规则大小: -> -> - WarpParse:174B -> - Vector-VRL:217B -> - Vector-Fixed:86B -> - Logstash:248B -> -> 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - -#### 3.1.2 AWS ELB Log (411B) - -表 3.1.2-1:AWS ELB Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **398,800** | 156.31 | 698% / 756% | 194 MB / 366 MB | **2.82x** | -| Vector-VRL | File -> BlackHole | 141,600 | 55.50 | 423% / 437% | 166 MB / 170 MB | 1.0x | -| Vector-Fixed | File -> BlackHole | 161,944 | 63.47 | 496% / 515% | 174 MB / 179 MB | 1.14x | -| Logstash | File -> BlackHole | 87,719 | 34.38 | 514% / 532% | 1145 MB / 1170 MB | 0.62x | -| **WarpParse** | TCP -> BlackHole | **369,900** | 144.98 | 669% / 724% | 178 MB / 461 MB | **2.49x** | -| Vector-VRL | TCP -> BlackHole | 148,400 | 58.16 | 456% / 486% | 178 MB / 185 MB | 1.0x | -| Vector-Fixed | TCP -> BlackHole | 176,600 | 69.22 | 417% / 435% | 169 MB / 176 MB | 1.19x | -| Logstash | TCP -> BlackHole | 125,000 | 49.00 | 557% / 625% | 1181 MB / 1217 MB | 0.84x | -| **WarpParse** | TCP -> File | **169,900** | 66.59 | 686% / 699% | 191 MB / 251 MB | **9.71x** | -| Vector-VRL | TCP -> File | 17,500 | 6.86 | 169% / 176% | 166 MB / 171 MB | 1.0x | -| Vector-Fixed | TCP -> File | 16,600 | 6.51 | 159% / 171% | 157 MB / 164 MB | 0.95x | -| Logstash | TCP -> File | 121,951 | 47.80 | 559% / 621% | 1283 MB / 1359 MB | 6.97x | - -> 解析规则大小: -> -> - WarpParse:1153B -> - Vector-VRL:921B -> - Vector-Fixed:64B -> - Logstash:876B -> -> 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - -#### 3.1.3 Firewall Log (1K) - -表 3.1.3-1: Firewall Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **163,700** | 175.16 | 672% / 761% | 272 MB / 441 MB | **2.88x** | -| Vector | File -> BlackHole | 56,760 | 60.73 | 513% / 693% | 176 MB / 204 MB | 1.00x | -| Logstash | File -> BlackHole | 17,391 | 18.61 | 675% / 724% | 1201 MB / 1228 MB | 0.31x | -| **WarpParse** | TCP -> BlackHole | **154,900** | 165.75 | 665% / 735% | 128 MB / 353 MB | **2.38x** | -| Vector | TCP -> BlackHole | 65,200 | 69.77 | 648% / 768% | 240 MB / 253 MB | 1.00x | -| Logstash | TCP -> BlackHole | 19,157 | 20.50 | 722% / 745% | 1283 MB / 1298 MB | 0.29x | -| **WarpParse** | TCP -> File | **99,700** | 106.68 | 659% / 746% | 89 MB / 280 MB | **5.09x** | -| Vector | TCP -> File | 19,600 | 20.97 | 293% / 328% | 243 MB / 253 MB | 1.00x | -| Logstash | TCP -> File | 18,018 | 19.28 | 654% / 709% | 1292 MB / 1364 MB | 0.92x | - -> 解析规则大小: -> -> - WarpParse:1552B -> - Vector-Fixed:1852B -> - Logstash:2406B -> ->在同一日志类型 + 同一拓扑下,以 Vector 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - -#### 3.1.4 APT Threat Log (3K) - -表 3.1.4-1:APT Threat Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **129,700** | 438.71 | 535% / 543% | 273 MB / 295 MB | **7.67x** | -| Vector | File -> BlackHole | 16,901 | 57.17 | 692% / 730% | 175 MB / 180 MB | 1.0x | -| Logstash | File -> BlackHole | 9,009 | 30.47 | 684% / 736% | 1211 MB / 1229 MB | 0.53x | -| **WarpParse** | TCP -> BlackHole | **129,600** | 438.37 | 499% / 558% | 265 MB / 389 MB | **6.86x** | -| Vector | TCP -> BlackHole | 18,900 | 63.93 | 774% / 794% | 229 MB / 243 MB | 1.0x | -| Logstash | TCP -> BlackHole | 10,183 | 34.45 | 733% / 757% | 1294 MB / 1308 MB | 0.54x | -| **WarpParse** | TCP -> File | **55,000** | 186.04 | 362% / 368% | 197 MB / 224 MB | **5.91x** | -| Vector | TCP -> File | 9,300 | 31.46 | 412% / 450% | 211 MB / 218 MB | 1.0x | -| Logstash | TCP -> File | 8,928 | 30.20 | 672% / 726% | 1305 MB / 1369 MB | 0.96x | - -> 解析规则大小: -> -> - WarpParse:985B -> - Vector:873B -> - Logstash:1027B -> ->在同一日志类型 + 同一拓扑下,以 Vector 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - -#### 3.1.5 Mixed Log (平均日志大小:886B) - -表 3.1.5-1:Mixed Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **286,000** | 241.66 | 632% / 736% | 271 MB / 374 MB | **5.56x** | -| Vector-VRL | File -> BlackHole | 51,446 | 43.47 | 494% / 692% | 228 MB / 249 MB | 1.00x | -| Vector-Fixed | File -> BlackHole | 52,530 | 44.39 | 500% / 696% | 182 MB / 201 MB | 1.02x | -| Logstash | File -> BlackHole | 21,505 | 18.17 | 400% /444% | 1136 MB / 1163 MB | 0.42x | -| **WarpParse** | TCP -> BlackHole | **258,600** | 218.51 | 532% / 709% | 189 MB / 483 MB | **3.10x** | -| Vector-VRL | TCP -> BlackHole | 83,300 | 70.38 | 516% / 781% | 208 MB / 222 MB | 1.00x | -| Vector-Fixed | TCP -> BlackHole | 81,700 | 69.03 | 518% / 784% | 181 MB / 191 MB | 0.98x | -| Logstash | TCP -> BlackHole | 35,087 | 29.65 | 629% / 697% | 1222 MB / 1282 MB | 0.42x | -| **WarpParse** | TCP -> File | **149,400** | 126.24 | 546% / 623% | 111 MB / 221 MB | **7.82x** | -| Vector-VRL | TCP -> File | 19,100 | 16.14 | 315% / 332% | 275 MB / 287 MB | 1.00x | -| Vector-Fixed | TCP -> File | 19,200 | 16.22 | 276% / 293% | 190 MB / 195 MB | 1.01x | -| Logstash | TCP -> File | 32,786 | 27.70 | 593% / 670% | 1317 MB / 1428 MB | 1.72x | - -> 解析规则大小: -> -> - WarpParse:3864B -> - Vector-VRL:3960B -> - Vector-Fixed:4725B -> - Logstash:5396B -> -> 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 -> -> 规则大小可能受格式/换行/注释/路径等影响,体积差异不影响性能口径;规则逻辑保持一致。 -> -> 混合日志规则: -> -> - 4类日志按照3:2:1:1混合 - - -### 3.2 解析 + 转换能力 (Parse + Transform) - -本节给出解析 + 转换场景的测试结果。 - -#### 3.2.1 Nginx Access Log(239B) - -表 3.2.1-1:Nginx Access Log(Parse + Transform;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **656,800** | 149.71 | 688% / 768% | 220 MB / 357 MB | **3.27x** | -| Vector-VRL | File -> BlackHole | 201,000 | 45.81 | 339% / 350% | 167 MB / 175 MB | 1.0x | -| Vector-Fixed | File -> BlackHole | 153,333 | 34.95 | 466% / 481% | 159 MB / 168 MB | 0.76x | -| Logstash | File -> BlackHole | 76,923 | 17.53 | 470% / 483% | 1126 MB / 1160 MB | 0.38x | -| **WarpParse** | TCP -> BlackHole | **524,800** | 119.62 | 608% / 637% | 189 MB / 410 MB | **1.34x** | -| Vector-VRL | TCP -> BlackHole | 392,200 | 89.39 | 472% / 512% | 162 MB / 166 MB | 1.0x | -| Vector-Fixed | TCP -> BlackHole | 208,900 | 47.61 | 502% / 537% | 146 MB / 151 MB | 0.53x | -| Logstash | TCP -> BlackHole | 107,142 | 24.42 | 520% / 552% | 1163 MB / 1243 MB | 0.27x | -| **WarpParse** | TCP -> File | **297,100** | 67.72 | 645% / 664% | 238 MB / 317 MB | **17.90x** | -| Vector-VRL | TCP -> File | 16,600 | 3.78 | 138% / 143% | 138 MB / 143 MB | 1.0x | -| Vector-Fixed | TCP -> File | 17,200 | 3.92 | 156% / 166% | 128 MB / 133MB | 1.04x | -| Logstash | TCP -> File | 95,238 | 21.71 | 510% / 551% | 1141 MB / 1217 MB | 5.74x | - -> 解析+转换规则大小: -> -> - WarpParse:521B -> - Vector-VRL:519B -> - Vector-Fixed:500B -> - Logstash:712B -> -> 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - -#### 3.2.2 AWS ELB Log(411B) - -表 3.2.2-1:AWS ELB Log(Parse + Transform;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **275,900** | 108.14 | 649% / 719% | 236 MB / 327 MB | **2.22x** | -| Vector-VRL | File -> BlackHole | 124,333 | 48.73 | 523% / 560% | 190 MB / 199 MB | 1.0x | -| Vector-Fixed | File -> BlackHole | 141,818 | 55.59 | 514% / 529% | 179 MB / 191 MB | 1.14x | -| Logstash | File -> BlackHole | 54,054 | 21.19 | 582% / 653% | 1155 MB / 1217 MB | 0.43x | -| **WarpParse** | TCP -> BlackHole | **259,900** | 101.87 | 682% / 697% | 139 MB / 275 MB | **1.99x** | -| Vector-VRL | TCP -> BlackHole | 130,600 | 51.19 | 446% / 500% | 191 MB / 195 MB | 1.0x | -| Vector-Fixed | TCP -> BlackHole | 146,000 | 57.23 | 413% / 441% | 181 MB / 184 MB | 1.12x | -| Logstash | TCP -> BlackHole | 78,125 | 30.62 | 624% / 696% | 1212 MB / 1272 MB | 0.60x | -| **WarpParse** | TCP -> File | **139,800** | 54.80 | 717% / 738% | 139 MB / 296 MB | **7.99x** | -| Vector-VRL | TCP -> File | 17,500 | 6.86 | 177% / 194% | 181 MB / 187 MB | 1.0x | -| Vector-Fixed | TCP -> File | 17,600 | 6.90 | 164% / 182% | 173 MB / 180 MB | 1.01x | -| Logstash | TCP -> File | 69,444 | 27.22 | 636% / 690% | 1192 MB / 1232 MB | 3.97x | - -> 解析+转换规则大小: -> -> - WarpParse:1694B -> - Vector-VRL:1259B -> - Vector-Fixed:570B -> - Logstash:2019B -> -> 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - -#### 3.2.3 Firewall Log (1K) - -表 3.2.3-1:Firewall Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **132,500** | 141.78 | 693% / 786% | 348 MB / 430 MB | **2.49x** | -| Vector | File -> BlackHole | 53,258 | 56.99 | 482% / 692% | 198 MB / 225 MB | 1.00x | -| Logstash | File -> BlackHole | 15,873 | 16.98 | 579% / 680% | 1111 MB / 1127 MB | 0.30x | -| **WarpParse** | TCP -> BlackHole | **125,500** | 134.29 | 614% / 747% | 130 MB / 304 MB | **2.22x** | -| Vector | TCP -> BlackHole | 56,600 | 60.56 | 630% / 702% | 257 MB / 272 MB | 1.00x | -| Logstash | TCP -> BlackHole | 16,528 | 17.69 | 664% / 720% | 1228 MB / 1262 MB | 0.29x | -| **WarpParse** | TCP -> File | **69,800** | 74.69 | 620% / 760% | 129 MB / 175 MB | **3.31x** | -| Vector | TCP -> File | 21,100 | 22.58 | 315% / 332% | 275 MB / 287 MB | 1.00x | -| Logstash | TCP -> File | 16,393 | 17.54 | 660% / 716% | 1210 MB / 1236 MB | 0.78x | - -> 解析+转换规则大小: -> -> - WarpParse:2249B -> - Vector:2344B -> - Logstash:3453B -> ->在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - -#### 3.2.4 APT Threat Log (3K) - -表 3.2.4-1:APT Threat Log(Parse + Transform;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **123,100** | 416.38 | 599% / 607% | 199 MB / 265 MB | **7.65x** | -| Vector | File -> BlackHole | 16,093 | 54.43 | 674% / 742% | 188 MB / 199 MB | 1.0x | -| Logstash | File -> BlackHole | 7,633 | 25.82 | 657% / 732% | 1174 MB / 1197 MB | 0.47x | -| **WarpParse** | TCP -> BlackHole | **114,200** | 386.28 | 508% / 532% | 228 MB / 248 MB | **6.14x** | -| Vector | TCP -> BlackHole | 18,600 | 62.91 | 769% / 790% | 243 MB / 252 MB | 1.0x | -| Logstash | TCP -> BlackHole | 9,852 | 33.33 | 704% / 748% | 1283 MB / 1304 MB | 0.53x | -| **WarpParse** | TCP -> File | **54,800** | 185.36 | 441% / 447% | 196 MB / 215 MB | **5.89x** | -| Vector-VRL | TCP -> File | 9,300 | 31.46 | 345% / 479% | 217 MB / 227 MB | 1.0x | -| Logstash | TCP -> File | 8,620 | 29.16 | 671% / 729% | 1229 MB / 1251 MB | 0.93x | - -> 解析+转换规则大小: -> -> - WarpParse:1638B -> - Vector:1382B -> - Logstash:2041B -> ->在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - -#### 3.2.5 Mixed Log (平均日志大小:886B) - -表 3.2.5-1:Mixed Log(Parse + Transform;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **204,400** | 172.71 | 566% / 663% | 196 MB / 265 MB | **4.45x** | -| Vector-VRL | File -> BlackHole | 45,909 | 38.79 | 469% / 683% | 204 MB / 225 MB | 1.00x | -| Vector-Fixed | File -> BlackHole | 48,484 | 40.97 | 541% / 714% | 178 MB / 209 MB | 1.06x | -| Logstash | File -> BlackHole | 32,967 | 27.86 | 573% / 685% | 1150 MB / 1172 MB | 0.72x | -| **WarpParse** | TCP -> BlackHole | **190,300** | 160.80 | 603% / 623% | 119 MB / 190 MB | **2.40x** | -| Vector-VRL | TCP -> BlackHole | 79,400 | 67.09 | 776% / 782% | 204 MB / 211 MB | 1.00x | -| Vector-Fixed | TCP -> BlackHole | 76,500 | 64.64 | 776% / 781% | 190 MB / 203 MB | 0.96x | -| Logstash | TCP -> BlackHole | 30,303 | 25.60 | 656% / 719% | 1258 MB / 1287MB | 0.38x | -| **WarpParse** | TCP -> File | **120,100** | 101.48 | 648% / 727% | 121 MB / 183 MB | **6.19x** | -| Vector-VRL | TCP -> File | 19,400 | 16.39 | 268% / 300% | 201 MB / 216 MB | 1.00x | -| Vector-Fixed | TCP -> File | 20,000 | 16.90 | 273% / 303% | 195 MB / 207 MB | 1.03x | -| Logstash | TCP -> File | 26,666 | 22.53 | 612% / 689% | 1218 MB / 1253 MB | 1.37x | - -> 解析+转换规则大小: -> -> - WarpParse:3864B -> - Vector-VRL:4723B -> - Vector-Fixed:1733B -> - Logstash:3984B -> -> 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 -> -> 规则大小可能受格式/换行/注释/路径等影响,体积差异不影响性能口径;规则逻辑保持一致。 -> -> 混合日志规则: -> -> - 4类日志按照3:2:1:1混合 - -## 4 固定速率资源占用测试 - -#### 4.1 Mixed Log (平均日志大小:867B) - -表 4.1.1-1:Mixed Log(Parse Only; TCP -> BlackHole ) - -| 引擎 | 拓扑 | CPU (Avg/Peak) | MEM (Avg/Peak) | -| :------------ | :--------------- | :------------- | :---------------- | -| **WarpParse** | TCP -> BlackHole | 54% / 56% | 60 MB / 66 MB | -| Vector-VRL | TCP -> BlackHole | 173% / 180% | 162 MB / 166 MB | -| Vector-Fixed | TCP -> BlackHole | 171% / 177% | 128 MB / 134 MB | -| Logstash | TCP -> BlackHole | 276% / 396% | 1190 MB / 1223 MB | - -> - **20000EPS**下的资源消耗情况 -> - logstash在warmup后采集 - - -## 5. 结果解读 - -### 5.1 吞吐与资源表现 - -**结果摘要**: - -1. 在 Linux 平台测试中,WarpParse 相对 Vector-VRL 的 EPS 倍数范围为:解析 **1.56x - 20.30x**,解析+转换 **1.34x - 17.90x**;TCP -> File 拓扑下的倍数区间更高。 -2. CPU 使用率在 WarpParse 场景中整体高于 Vector/Logstash(见各表);吞吐提升与 CPU 占用同时出现。 -3. APT (3K) 场景下,WarpParse 的 MPS 保持较高水平;Vector 在同场景的 EPS/MPS 相对更低(见 3.1.4/3.2.4)。 - -* ### 5.2 规则与表达能力要点 +- Warmup 与采样窗口: + +- WarpParse 与 Vector:引擎启动后快速进入稳定状态,未单独区分 warmup 阶段。 + +- 重复次数与取值规则: + + - 默认单次运行。 + - 如需更严格统计,建议重复 N=3 次并取 median 作为最终结果。 + + ### 2.5 默认配置与调优说明 + + 除非表格或备注中明确说明,本报告结果基于各引擎默认配置,未开启专项性能调优或非默认参数。 + + ## 3. 详细吞吐量性能对比分析 + + ### 3.0 测试结果汇总表 + + 下表为结果索引,用于定位不同日志类型与测试能力的明细表格。 + + | 日志类型 | 解析(Parse Only) | 解析 + 转换(Parse + Transform) | + | :----------------------------- | :----------------- | :------------------------------- | + | Nginx Access Log (239B) | 见 3.1.1 | 见 3.2.1 | + | AWS ELB Log (411B) | 见 3.1.2 | 见 3.2.2 | + | Firewall Log (1K) | 见 3.1.3 | 见 3.2.3 | + | APT Threat Log (3K) | 见 3.1.4 | 见 3.2.4 | + | Mixed Log (平均日志大小:867B) | 见 3.1.5 | 见 3.2.5 | + + ### 3.1 日志解析能力 (Parse Only) + + 本节给出纯解析场景的测试结果。 + + #### 3.1.1 Nginx Access Log (239B) + + 表 3.1.1-1:Nginx Access Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :-------------- | :------- | +| **WarpParse** | **778,100** | | 727% / 775% | 131 MB / 182 MB | | +| Vector-VRL | 1,040,400 | 237.14 | 673% / 718% | 328 MB / 350 MB | 1.0x | +| Vector-Fixed | 667,500 | 152.14 | 790% / 894% | 300 MB / 314 MB | 0.64x | + + > 解析规则大小: + > + > - WarpParse:174B + > - Vector-VRL:217B + > - Vector-Fixed:86B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.1.2 AWS ELB Log (411B) + + 表 3.1.2-1:AWS ELB Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :-------------- | :------- | +| **WarpParse** | **429,800** | | 762% / 779% | 202 MB / 245 MB | | +| Vector-VRL | 287,900 | 112.57 | 587% / 611% | 321 MB / 330 MB | 1.0x | +| Vector-Fixed | 343,400 | 134.27 | 489% / 529% | 325 MB / 344 MB | 1.19x | + + > 解析规则大小: + > + > - WarpParse:1153B + > - Vector-VRL:921B + > - Vector-Fixed:64B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.1.3 Firewall Log (1K) + + 表 3.1.3-1: Firewall Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :-------------- | :------- | +| **WarpParse** | **265,200** | | 783% / 787% | 379 MB / 403 MB | | +| Vector | 147,100 | 157.40 | 941% / 1085% | 441 MB / 456 MB | 1.00x | + + > 解析规则大小: + > + > - WarpParse:1552B + > - Vector-Fixed:1852B + > + > 在同一日志类型 + 同一拓扑下,以 Vector 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.1.4 APT Threat Log (3K) + + 表 3.1.4-1:APT Threat Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :------ | :------------- | :-------------- | :------- | +| **WarpParse** | **390,100** | 1319.21 | 1295% / 1301% | 154 MB / 163 MB | 6.26x | +| Vector | 62,300 | 210.68 | 1510% / 1596% | 419 MB / 464 MB | 1.0x | + + > 解析规则大小: + > + > - WarpParse:985B + > - Vector:873B + > + > 在同一日志类型 + 同一拓扑下,以 Vector 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.1.5 Mixed Log (平均日志大小:886B) + + 表 3.1.5-1:Mixed Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :-------------- | :------- | +| **WarpParse** | **683,300** | 577.36 | 1218% / 1281% | 134 MB / 146 MB | 2.69x | +| Vector-VRL | 253,700 | 214.37 | 1530% / 1569% | 413 MB / 427 MB | 1.00x | +| Vector-Fixed | 250,900 | 212.00 | 1566% / 1577% | 392 MB / 410 MB | 0.99x | + + > 解析规则大小: + > + > - WarpParse:3864B + > - Vector-VRL:3960B + > - Vector-Fixed:4725B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + > + > 规则大小可能受格式/换行/注释/路径等影响,体积差异不影响性能口径;规则逻辑保持一致。 + > + > 混合日志规则: + > + > - 4类日志按照3:2:1:1混合 + + + ### 3.2 解析 + 转换能力 (Parse + Transform) + + 本节给出解析 + 转换场景的测试结果。 + + #### 3.2.1 Nginx Access Log(239B) + + 表 3.2.1-1:Nginx Access Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :------------ | :----- | :------------- | :-------------- | :------- | +| **WarpParse** | **1,146,800** | 261.39 | 1212% / 1318% | 106 MB / 220 MB | 1.39x | +| Vector-VRL | 827,800 | 188.68 | 692% / 703% | 342 MB / 355 MB | 1.0x | +| Vector-Fixed | 521,200 | 118.80 | 803% / 834% | 300 MB / 308 MB | 0.63x | + + > 解析+转换规则大小: + > + > - WarpParse:521B + > - Vector-VRL:519B + > - Vector-Fixed:500B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.2.2 AWS ELB Log(411B) + + 表 3.2.2-1:AWS ELB Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :-------------- | :------- | +| **WarpParse** | **637,700** | 249.34 | 1525% / 1538% | 181 MB / 415 MB | 2.58x | +| Vector-VRL | 247,200 | 96.66 | 562% / 590% | 341 MB / 356 MB | 1.0x | +| Vector-Fixed | 293,500 | 114.76 | 516% / 559% | 353 MB / 389 MB | 1.19x | + + > 解析+转换规则大小: + > + > - WarpParse:1694B + > - Vector-VRL:1259B + > - Vector-Fixed:570B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.2.3 Firewall Log (1K) + + 表 3.2.3-1:Firewall Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :-------------- | :------- | +| **WarpParse** | **374,400** | 400.62 | 1425% / 1479% | 507 MB / 846 MB | 2.95x | +| Vector | 127,100 | 136.00 | 840% / 920% | 487 MB / 530 MB | 1.00x | + + > 解析+转换规则大小: + > + > - WarpParse:2249B + > - Vector:2344B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.2.4 APT Threat Log (3K) + + 表 3.2.4-1:APT Threat Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :------ | :------------- | :-------------- | :------- | +| **WarpParse** | **324,000** | 1095.68 | 1417% / 1431% | 188 MB / 235 MB | 5.49x | +| Vector | 59,000 | 199.52 | 1457% / 1592% | 444 MB / 474 MB | 1.0x | + + > 解析+转换规则大小: + > + > - WarpParse:1638B + > - Vector:1382B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.2.5 Mixed Log (平均日志大小:886B) + + 表 3.2.5-1:Mixed Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :-------------- | :------- | +| **WarpParse** | **514,100** | 434.39 | 1305% / 1424% | 221 MB / 262 MB | 2.13x | +| Vector-VRL | 241,900 | 204.39 | 1525% / 1559% | 419 MB / 434 MB | 1.00x | +| Vector-Fixed | 233,800 | 197.55 | 1553% / 1569% | 401 MB / 416 MB | 0.97x | + + > 解析+转换规则大小: + > + > - WarpParse:3864B + > - Vector-VRL:4723B + > - Vector-Fixed:1733B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + > + > 规则大小可能受格式/换行/注释/路径等影响,体积差异不影响性能口径;规则逻辑保持一致。 + > + > 混合日志规则: + > + > - 4类日志按照3:2:1:1混合 + + + ## 5. 结果解读 + + ### 5.1 吞吐与资源表现 + + **结果摘要**: + + 1. 在 Linux 平台 `TCP -> BlackHole` 测试中,WarpParse 相对 Vector-VRL 的 EPS 倍数范围为:解析 **1.56x - 6.26x**,解析+转换 **1.39x - 5.49x**;峰值出现在 APT Threat Log 场景。 + 2. CPU 使用率在 WarpParse 场景中整体高于 Vector/Logstash(见各表);吞吐提升与 CPU 占用同时出现。 + 3. APT (3K) 场景下,WarpParse 的 MPS 最高为 **1319.21 MiB/s**(Parse Only;TCP -> BlackHole);Vector 在同场景的 EPS/MPS 相对更低(见 3.1.4/3.2.4)。 + + * ### 5.2 规则与表达能力要点 - 规则体积不仅反映配置分发与维护成本, 也可作为衡量引擎在表达同等日志语义时所需复杂度的参考指标。 @@ -487,30 +391,27 @@ - Fixed 优先使用内置解析能力,在规则体积与维护复杂度上更具优势。 两者在表达能力与性能上的权衡以表格数据为准。 - - 在多数日志类型下,TCP → File 拓扑呈现更高的性能倍数区间(见 3.1 / 3.2 对应表格), - 该结论在不同规则复杂度水平下均保持一致。 - -### 5.3 稳定性 + ### 5.3 稳定性 -* 本报告未引入背压/队列深度等专用指标,稳定性判断仅基于运行期间吞吐与资源观测。 -* **注意点**: TCP -> File 大包场景(如 APT)下内存随吞吐上升(约 224-389 MB),需结合容量规划。 + * 本报告未引入背压/队列深度等专用指标,稳定性判断仅基于运行期间吞吐与资源观测。 + * **注意点**: TCP -> BlackHole 大包场景下内存随吞吐上升,需结合容量规划。 -## 6. 阶段性总结与建议 + ## 6. 阶段性总结与建议 -以下为基于本报告范围的阶段性观察,不构成生产选型结论;实际落地需结合业务流量、架构约束与运维能力评估。 + 以下为基于本报告范围的阶段性观察,不构成生产选型结论;实际落地需结合业务流量、架构约束与运维能力评估。 -| 决策维度 | 建议方案 | 结果要点 | 依据 | -| :----------------- | :------- | :------- | :--------------------------------------------------------------------------------------------------------------------------- | -| **追求吞吐能力** | **WarpParse** | 关注本报告中的 EPS 倍数区间 | 解析场景 **1.56x-20.30x**,解析+转换 **1.34x-17.90x**;TCP -> File 拓扑区间更高。 | -| **资源受限环境** | **WarpParse** | 关注 CPU/内存的权衡关系 | Vector-VRL 在多数场景下 CPU/MEM 低于 WarpParse;Logstash 内存占用显著更高(见各表)。 | -| **边缘/Agent部署** | **WarpParse** | 关注规则体积与单机吞吐 | 规则体积在不同日志类型间存在差异;吞吐指标在本报告中更高,具体差异见各节“规则大小”和表格数据。 | -| **通用生态兼容** | **WarpParse** | 关注生态与可扩展性 | 生态兼容性未在本报告中量化,建议结合现有生态与插件适配成本评估。 | +| 决策维度 | 建议方案 | 结果要点 | 依据 | +| :----------------- | :------------ | :-------------------------- | :--------------------------------------------------------------------------------------------- | +| **追求吞吐能力** | **WarpParse** | 关注本报告中的 EPS 倍数区间 | TCP -> BlackHole 下,解析场景 **1.56x - 6.26x**,解析+转换 **1.39x - 5.49x**。 | +| **资源受限环境** | **WarpParse** | 关注 CPU/内存的权衡关系 | Vector-VRL 在多数场景下 CPU/MEM 低于 WarpParse;Logstash 内存占用显著更高(见各表)。 | +| **边缘/Agent部署** | **WarpParse** | 关注规则体积与单机吞吐 | 规则体积在不同日志类型间存在差异;吞吐指标在本报告中更高,具体差异见各节“规则大小”和表格数据。 | +| **通用生态兼容** | **WarpParse** | 关注生态与可扩展性 | 生态兼容性未在本报告中量化,建议结合现有生态与插件适配成本评估。 | -**阶段性结论**: -基于本报告数据,WarpParse 与 Vector-VRL 的 EPS 倍数区间为:纯解析 **1.56x-20.30x**,解析+转换 **1.34x-17.90x**,端到端(TCP -> File)倍数更高。上述结果可作为同类场景的阶段性基线参考;在大包 TCP -> File 场景下需关注内存随吞吐上升(约 224-389 MB)。 + **阶段性结论**: + 基于本报告数据,WarpParse 与 Vector-VRL 在 `TCP -> BlackHole` 拓扑下的 EPS 倍数区间为:纯解析 **1.56x - 6.26x**,解析+转换 **1.39x - 5.49x**。上述结果可作为同类网络接收与处理场景的阶段性基线参考。 -## 7. 已知限制与注意事项 + ## 7. 已知限制与注意事项 -* 本报告为单机测试,未覆盖多节点、HA(High Availability,高可用)、持久化优化或生产负载波动等因素。 -* 测试范围限定为五类日志与三种拓扑,未覆盖更复杂的输入/输出链路。 -* 结果依赖具体硬件、操作系统与存储配置,跨环境对比需谨慎。 + * 本报告为单机测试,未覆盖多节点、HA(High Availability,高可用)、持久化优化或生产负载波动等因素。 + * 测试范围限定为五类日志与三种拓扑,未覆盖更复杂的输入/输出链路。 + * 结果依赖具体硬件、操作系统与存储配置,跨环境对比需谨慎。 \ No newline at end of file diff --git a/benchmark/report/report_mac.md b/benchmark/report/report_mac.md index 3d910fce..1a5266fc 100644 --- a/benchmark/report/report_mac.md +++ b/benchmark/report/report_mac.md @@ -18,14 +18,14 @@ 本次测试使用版本如下: -* **WarpParse**:0.12.0 -* **Vector**:0.49.0 +* **WarpParse**:0.24.12 +* **Vector**:0.54.0 * **Logstash**:9.2.3 构建与来源信息: -* **WarpParse**:构建来源/commit/tag = GitHub tag v0.12.0-alpha (commit: 2ba6e55);构建参数 = 官方 release 构建产物(zip/tar.gz),未修改构建选项 -* **Vector**:构建来源/commit/tag = v0.49.0 (commit: dc7e792);构建参数 = 官方发布的 release 二进制,未修改构建选项 +* **WarpParse**:构建来源/commit/tag = GitHub tag v0.24.12-beta (commit: 2ba6e55);构建参数 = 官方 release 构建产物(zip/tar.gz),未修改构建选项 +* **Vector**:构建来源/commit/tag = v0.54.0 (commit: dc7e792);构建参数 = 官方发布的 release 二进制,未修改构建选项 * **Logstash**:构建来源/commit/tag = GitHub tag v9.2.3 (commit: 4eb0f3f);构建参数 = 官方发行包(zip / tar.gz,bundled JDK),未进行源码级构建 本报告已记录版本与构建来源;复现时仍需确保引擎运行参数、系统配置与数据集参数一致。 @@ -39,17 +39,20 @@ ### 2.1 测试环境(Test Environment) #### 平台信息(Platform) + - **平台类型**:Mac mini(Apple M4) - **操作系统**:macOS 15.5 - **系统架构**:arm64 - **网络环境**:本机回环(127.0.0.1) #### 计算资源(Compute) + - **CPU**:10-core - **内存**:16 GiB - **后台任务/性能模式**:测试期间关闭不必要后台任务;未做额外系统调优 #### 存储配置(Storage) + - **存储介质**:Internal SSD - **文件系统**:APFS - **卷大小**:256G @@ -58,14 +61,12 @@ * **日志类型**: * **Nginx Access Log** (239B): 典型 Web 访问日志,高吞吐场景。 - * **AWS ELB Log** (411B): 云设施负载均衡日志,中等复杂度。 - * **Firewall Log** (1K): 终端安全监控日志,JSON 结构,字段较多。 - * **APT Threat Log** (3K): 模拟的高级持续性威胁日志,大体积、长文本。 - * **Mixed Log** (886B): 上述四类日志混合起来形成的日志类型。 + * **AWS ELB Log** (410B): 云设施负载均衡日志,中等复杂度。 + * **Firewall Log** (1122B): 终端安全监控日志,JSON 结构,字段较多。 + * **APT Threat Log** (3546B): 模拟的高级持续性威胁日志,大体积、长文本。 + * **Mixed Log** (1260.17B): 上述四类日志按照 1:1:3:1 混合起来形成的日志类型。 * **数据拓扑**: - * **File -> BlackHole**: 测算引擎极限 I/O 读取与处理能力 (基准)。 * **TCP -> BlackHole**: 测算网络接收与处理能力。 - * **TCP -> File**: 测算端到端完整落地能力。 * **测试能力**: * **解析 (Parse)**: 仅进行正则提取/KV解析与字段标准化。 * **解析+转换 (Parse+Transform)**: 在解析基础上增加字段映射、富化、类型转换等逻辑。 @@ -80,8 +81,10 @@ * **性能倍数**: 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 为 1.0x 进行归一化。 说明: + * CPU 为多核累计百分比(例如 800% ≈ 8 个逻辑核满载),统计对象为**测试进程本身**(非系统总 CPU),由外部监控脚本按固定采样周期采集并计算 Avg/Peak。 * MPS 换算公式:**MPS = EPS × AvgLogSize(B) / 1024 / 1024**。 + - 采样来源与采样口径说明: - EPS:统一基于各引擎原生可观测性或统计接口获取。 - WarpParse / Vector:使用引擎内置的吞吐统计能力。 @@ -93,9 +96,9 @@ ### 2.4 测试方法与执行方式 -测试在单机环境中按日志类型与拓扑逐项执行。输入数据由本仓库提供的 benchmark 脚本生成或回放, +测试在单机环境中按日志类型逐项执行。输入数据由本仓库提供的 benchmark 脚本生成或回放, 测试过程中各引擎独立运行,避免相互干扰。 -输出目标根据测试拓扑配置为 BlackHole 或 File,以分别评估纯处理能力与包含 I/O 的端到端性能。 +输出目标配置为 BlackHole,以评估网络接收与处理能力。 测试执行流程、脚本入口及通用参数说明见 benchmark/README.md。 @@ -116,16 +119,16 @@ 通过等量输入数据实现规模对齐,而非依赖统一的启动参数。 - 因此,`-c` 可视为本 benchmark 中“统一事件规模定义”的符号化表示, 而非跨引擎通用的命令行参数。 - + - 结束条件: - 所有测试均以处理完成等量事件作为结束条件。 - 不采用按固定运行时长结束的方式, 以避免不同引擎在启动、预热与稳定阶段差异带来的统计偏差。 - Warmup 与采样窗口: - - WarpParse 与 Vector:引擎启动后快速进入稳定状态,未单独区分 warmup 阶段。 - - Logstash:由于 JVM/JIT 与 pipeline 初始化特性,测试前先进行 warmup 运行; - 在确认吞吐进入稳定区间后,开始采集 EPS / 资源指标。 + - WarpParse 与 Vector:引擎启动后快速进入稳定状态,未单独区分 warmup 阶段。 + - Logstash:由于 JVM/JIT 与 pipeline 初始化特性,测试前先进行 warmup 运行; + 在确认吞吐进入稳定区间后,开始采集 EPS / 资源指标。 - 重复次数与取值规则: - 默认单次运行。 @@ -141,35 +144,28 @@ 下表为结果索引,用于定位不同日志类型与测试能力的明细表格。 -| 日志类型 | 解析(Parse Only) | 解析 + 转换(Parse + Transform) | -| :-- | :-- | :-- | -| Nginx Access Log (239B) | 见 3.1.1 | 见 3.2.1 | -| AWS ELB Log (411B) | 见 3.1.2 | 见 3.2.2 | -| Firewall Log (1K) | 见 3.1.3 | 见 3.2.3 | -| APT Threat Log (3K) | 见 3.1.4 | 见 3.2.4 | -| Mixed Log (平均日志大小:886B) | 见 3.1.5 | 见 3.2.5 | +| 日志类型 | 解析(Parse Only) | 解析 + 转换(Parse + Transform) | +| :--------------------------------- | :----------------- | :------------------------------- | +| Nginx Access Log (239B) | 见 3.1.1 | 见 3.2.1 | +| AWS ELB Log (410B) | 见 3.1.2 | 见 3.2.2 | +| Firewall Log (1122B) | 见 3.1.3 | 见 3.2.3 | +| APT Threat Log (3546B) | 见 3.1.4 | 见 3.2.4 | +| Mixed Log (平均日志大小:1260.17B) | 见 3.1.5 | 见 3.2.5 | ### 3.1 日志解析能力 (Parse Only) + 本节给出纯解析场景的测试结果。 #### 3.1.1 Nginx Access Log (239B) -表 3.1.1-1:Nginx Access Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :------------ | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **2,789,800** | 635.86 | 768% / 858% | 126 MB / 130 MB | **4.88x** | -| Vector-VRL | File -> BlackHole | 572,076 | 130.39 | 298% / 320% | 222 MB / 241 MB | 1.0x | -| Vector-Fixed | File -> BlackHole | 513,181 | 116.97 | 466% / 538% | 232 MB / 245 MB | 0.90x | -| Logstash | File -> BlackHole | 270,270 | 61.60 | 308% / 418% | 1092 MB / 1115 MB | 0.47x | -| **WarpParse** | TCP -> BlackHole | **1,657,500** | 377.80 | 530% / 580% | 307 MB / 320 MB | **1.42x** | -| Vector-VRL | TCP -> BlackHole | 1,163,700 | 265.24 | 540% / 598% | 218 MB / 224 MB | 1.0x | -| Vector-Fixed | TCP -> BlackHole | 730,700 | 166.55 | 592% / 658% | 212 MB / 220 MB | 0.63x | -| Logstash | TCP -> BlackHole | 541,403 | 123.40 | 465% / 667% | 1161 MB / 1234 MB | 0.47x | -| **WarpParse** | TCP -> File | **789,000** | 179.84 | 445% / 470% | 315 MB / 353 MB | **8.78x** | -| Vector-VRL | TCP -> File | 89,900 | 20.49 | 165% / 170% | 213 MB / 221 MB | 1.0x | -| Vector-Fixed | TCP -> File | 92,300 | 21.04 | 201% / 214% | 195 MB / 208 MB | 1.03x | -| Logstash | TCP -> File | 507,975 | 115.78 | 515% / 762% | 1153 MB / 1184 MB | 5.65x | +表 3.1.1-1:Nginx Access Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :------------ | :----- | :------------- | :---------------- | :------- | +| **WarpParse** | **2,213,800** | 504.59 | 897% / 923% | 321 MB / 336 MB | 1.90x | +| Vector-VRL | 1,163,700 | 265.24 | 540% / 598% | 218 MB / 224 MB | 1.0x | +| Vector-Fixed | 730,700 | 166.55 | 592% / 658% | 212 MB / 220 MB | 0.63x | +| Logstash | 541,403 | 123.40 | 465% / 667% | 1161 MB / 1234 MB | 0.47x | > 解析规则大小: > @@ -180,24 +176,16 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 -#### 3.1.2 AWS ELB Log (411B) - -表 3.1.2-1:AWS ELB Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :------------ | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **1,124,500** | 440.79 | 787% / 824% | 314 MB / 320 MB | **2.89x** | -| Vector-VRL | File -> BlackHole | 389,000 | 152.47 | 597% / 658% | 280 MB / 297 MB | 1.0x | -| Vector-Fixed | File -> BlackHole | 491,739 | 192.74 | 514% / 537% | 259 MB / 284 MB | 1.26x | -| Logstash | File -> BlackHole | 208,333 | 81.66 | 394% / 506% | 983 MB / 1141 MB | 0.54x | -| **WarpParse** | TCP -> BlackHole | **947,300** | 371.33 | 625% / 664% | 357 MB / 362 MB | **2.40x** | -| Vector-VRL | TCP -> BlackHole | 394,600 | 154.67 | 546% / 620% | 275 MB / 286 MB | 1.0x | -| Vector-Fixed | TCP -> BlackHole | 555,500 | 217.73 | 465% / 523% | 250 MB / 255 MB | 1.41x | -| Logstash | TCP -> BlackHole | 425,531 | 166.79 | 817% / 879% | 1257 MB / 1287 MB | 1.08x | -| **WarpParse** | TCP -> File | **349,700** | 137.07 | 496% / 537% | 333 MB / 432 MB | **4.12x** | -| Vector-VRL | TCP -> File | 84,700 | 33.20 | 240% / 256% | 268 MB / 275 MB | 1.0x | -| Vector-Fixed | TCP -> File | 86,900 | 34.06 | 199% / 208% | 252 MB / 264 MB | 1.03x | -| Logstash | TCP -> File | 350,877 | 137.53 | 679% / 891% | 1288 MB / 1327 MB | 4.14x | +#### 3.1.2 AWS ELB Log (410B) + +表 3.1.2-1:AWS ELB Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :------------ | :----- | :------------- | :---------------- | :------- | +| **WarpParse** | **1,060,800** | 414.78 | 886% /916% | 426 MB / 503 MB | 2.69x | +| Vector-VRL | 394,600 | 154.29 | 546% / 620% | 275 MB / 286 MB | 1.0x | +| Vector-Fixed | 555,500 | 217.20 | 465% / 523% | 250 MB / 255 MB | 1.41x | +| Logstash | 425,531 | 166.39 | 817% / 879% | 1257 MB / 1287 MB | 1.08x | > 解析规则大小: > @@ -208,72 +196,52 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 -#### 3.1.3 Firewall Log (1K) +#### 3.1.3 Firewall Log (1122B) -表 3.1.3-1: Firewall Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) +表 3.1.3-1: Firewall Log(Parse Only;TCP -> BlackHole) -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **459,900** | 492.10 | 887% / 923% | 229 MB / 234 MB | **4.24x** | -| Vector-VRL | File -> BlackHole | 115,322 | 123.40 | 456% / 504% | 254 MB / 275 MB | 1.00x | -| Logstash | File -> BlackHole | 50,505 | 54.04 | 881% / 929% | 1139 MB / 1192 MB | 0.47x | -| **WarpParse** | TCP -> BlackHole | **406,400** | 434.86 | 761% / 787% | 424 MB / 484 MB | **2.15x** | -| Vector-VRL | TCP -> BlackHole | 188,800 | 186.50 | 691% / 790% | 373 MB / 393 MB | 1.00x | -| Logstash | TCP -> BlackHole | 54,347 | 58.15 | 874% / 934% | 1223 MB / 1260 MB | 0.31x | -| **WarpParse** | TCP -> File | 251,100 | 268.68 | 677% / 712% | 237 MB / 247 MB | **3.45x** | -| Vector-VRL | TCP -> File | 72,700 | 77.79 | 368% / 413% | 403 MB / 407 MB | 1.00x | -| Logstash | TCP -> File | 54,945 | 58.79 | 894% / 950% | 1192 MB / 1223 MB | 0.76x | +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :---------------- | :------- | +| **WarpParse** | **733,200** | 784.54 | 833% / 858% | 460 MB / 519 MB | 3.88x | +| Vector-VRL | 188,800 | 202.02 | 691% / 790% | 373 MB / 393 MB | 1.00x | +| Logstash | 54,347 | 58.15 | 874% / 934% | 1223 MB / 1260 MB | 0.29x | > 解析规则大小: > > - WarpParse:137B > - Vector-VRL:317B > - Logstash:527B -> ->在同一日志类型 + 同一拓扑下,以 Vector-VRL的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 +> +> 在同一日志类型 + 同一拓扑下,以 Vector-VRL的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 -#### 3.1.4 APT Threat Log (3K) +#### 3.1.4 APT Threat Log (3546B) -表 3.1.4-1:APT Threat Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) +表 3.1.4-1:APT Threat Log(Parse Only;TCP -> BlackHole) -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :------ | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **328,000** | 1109.53 | 743% / 829% | 183 MB / 184 MB | **8.68x** | -| Vector-VRL | File -> BlackHole | 37,777 | 127.79 | 578% / 657% | 255 MB / 265 MB | 1.0x | -| Logstash | File -> BlackHole | 29,940 | 101.28 | 847% / 915% | 944 MB / 1152 MB | 0.79x | -| **WarpParse** | TCP -> BlackHole | **299,700** | 1013.80 | 718% / 743% | 335 MB / 351 MB | **5.88x** | -| Vector-VRL | TCP -> BlackHole | 51,000 | 172.52 | 834% / 887% | 385 MB / 413 MB | 1.0x | -| Logstash | TCP -> BlackHole | 31,446 | 106.37 | 843% / 892% | 1218 MB / 1313 MB | 0.62x | -| **WarpParse** | TCP -> File | **99,900** | 337.94 | 336% / 352% | 333 MB / 508 MB | **2.69x** | -| Vector-VRL | TCP -> File | 37,200 | 125.84 | 652% / 837% | 411 MB / 424 MB | 1.0x | -| Logstash | TCP -> File | 30,120 | 101.89 | 840% / 897% | 1060 MB / 1232 MB | 0.81x | +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :------ | :------------- | :---------------- | :------- | +| **WarpParse** | **468,300** | 1583.66 | 860% / 887% | 420 MB / 460 MB | 9.18x | +| Vector-VRL | 51,000 | 172.47 | 834% / 887% | 385 MB / 413 MB | 1.0x | +| Logstash | 31,446 | 106.34 | 843% / 892% | 1218 MB / 1313 MB | 0.62x | > 解析规则大小: > > - WarpParse:985B > - Vector:873B > - Logstash:1027B -> ->在同一日志类型 + 同一拓扑下,以 Vector-VRL的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - -#### 3.1.5 Mixed Log (平均日志大小:886B) - -表 3.1.5-1:Mixed Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **715,000** | 604.14 | 860% / 868% | 246 MB / 254 MB | **3.76x** | -| Vector-VRL | File -> BlackHole | 190,000 | 160.54 | 827% / 880% | 281 MB / 329 MB | 1.0x | -| Vector-Fixed | File -> BlackHole | 197,073 | 166.52 | 825% / 903% | 237 MB / 250 MB | 1.04x | -| Logstash | File -> BlackHole | 109,890 | 86.43 | 746% / 955% | 1271 MB / 1292 MB | 0.62x | -| **WarpParse** | TCP -> BlackHole | **586,900** | 495.90 | 697% / 706% | 299 MB / 322 MB | **2.69x** | -| Vector-VRL | TCP -> BlackHole | 218,600 | 184.71 | 891% / 930% | 351 MB / 369 MB | 1.0x | -| Vector-Fixed | TCP -> BlackHole | 220,100 | 185.98 | 894% / 935% | 293 MB / 312 MB | 1.01x | -| Logstash | TCP -> BlackHole | 128,205 | 108.33 | 893% / 957% | 1258 MB / 1289 MB | 0.66x | -| **WarpParse** | TCP -> File | **308,400** | 260.58 | 537% / 560% | 177 MB / 251 MB | **3.90x** | -| Vector-VRL | TCP -> File | 79,000 | 66.75 | 383% / 415% | 393 MB / 396 MB | 1.0x | -| Vector-Fixed | TCP -> File | 79,500 | 67.17 | 384% / 407% | 331 MB / 355 MB | 1.01x | -| Logstash | TCP -> File | 126,582 | 106.96 | 879% / 972% | 1278 MB / 1296 MB | 1.60x | +> +> 在同一日志类型 + 同一拓扑下,以 Vector-VRL的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + +#### 3.1.5 Mixed Log (平均日志大小:1260B) + +表 3.1.5-1:Mixed Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :---------------- | :------- | +| **WarpParse** | **691,900** | 831.52 | 880% / 904% | 453 MB / 475 MB | 4.27x | +| Vector-VRL | 162,000 | 194.69 | 930% / 959% | 274 MB / 296 MB | 1.0x | +| Vector-Fixed | 166,500 | 200.10 | 928% / 962% | 265 MB / 279 MB | 1.03x | +| Logstash | 128,205 | 154.08 | 893% / 957% | 1258 MB / 1289 MB | 0.79x | > 解析规则大小: > @@ -286,22 +254,8 @@ > > 混合日志规则: > -> - 4类日志按照3:2:1:1混合 -> - -#### 3.1.6 Mixed Log (平均日志大小:867B) - -表 3.1.6-1:Mixed Log(Parse Only; TCP -> BlackHole ) - -| 引擎 | 拓扑 | CPU (Avg/Peak) | MEM (Avg/Peak) | -| :------------ | :---------------- | :------------- | :-------------- | -| **WarpParse** | TCP -> BlackHole | 44% / 57% | 97 MB / 100 MB | -| Vector-VRL | TCP -> BlackHole | 116% / 143% | 191 MB / 194 MB | -| Vector-Fixed | TCP -> BlackHole | 125% / 146% | 153 MB / 156 MB | -| Logstash | TCP -> BlackHole | 159% / 192% | 1119 MB / 1191 MB | - -> - **20000EPS**下的资源消耗情况 -> - logstash在warmup后采集 +> - 4类日志按照1:1:3:1混合 +> - 平均日志大小:(239 + 410 + 1122 × 3 + 3546) / 6 = 1260.17B ### 3.2 解析 + 转换能力 (Parse + Transform) @@ -309,22 +263,14 @@ #### 3.2.1 Nginx Access Log(239B) -表 3.2.1-1:Nginx Access Log(Parse + Transform;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :------------ | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **2,162,500** | 492.91 | 821% / 911% | 209 MB / 222 MB | **3.77x** | -| Vector-VRL | File -> BlackHole | 572,941 | 130.59 | 344% / 378% | 274 MB / 286 MB | 1.0x | -| Vector-Fixed | File -> BlackHole | 482,000 | 109.86 | 554% / 612% | 252 MB / 261 MB | 0.84x | -| Logstash | File -> BlackHole | 227,272 | 51.80 | 359% / 548% | 1109 MB / 1143 MB | 0.40x | -| **WarpParse** | TCP -> BlackHole | **1,382,800** | 315.19 | 602% / 656% | 279 MB / 369 MB | **1.35x** | -| Vector-VRL | TCP -> BlackHole | 1,024,300 | 233.47 | 534% / 618% | 232 MB / 235 MB | 1.0x | -| Vector-Fixed | TCP -> BlackHole | 595,800 | 135.80 | 543% / 651% | 214 MB / 219 MB | 0.58x | -| Logstash | TCP -> BlackHole | 357,142 | 81.40 | 685% / 861% | 1219 MB / 1258 MB | 0.35x | -| **WarpParse** | TCP -> File | **788,900** | 179.82 | 574% / 587% | 249 MB / 253 MB | **8.44x** | -| Vector-VRL | TCP -> File | 93,500 | 21.31 | 171% / 184% | 203 MB / 211 MB | 1.0x | -| Vector-Fixed | TCP -> File | 87,500 | 19.94 | 208% / 223% | 197 MB / 212 MB | 0.94x | -| Logstash | TCP -> File | 344,827 | 78.60 | 661% / 883% | 1202 MB / 1230 MB | 3.69x | +表 3.2.1-1:Nginx Access Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :------------ | :----- | :------------- | :---------------- | :------- | +| **WarpParse** | **1,451,800** | 330.91 | 898% / 918% | 217 MB / 225 MB | 1.42x | +| Vector-VRL | 1,024,300 | 233.47 | 534% / 618% | 232 MB / 235 MB | 1.0x | +| Vector-Fixed | 595,800 | 135.80 | 543% / 651% | 214 MB / 219 MB | 0.58x | +| Logstash | 357,142 | 81.40 | 685% / 861% | 1219 MB / 1258 MB | 0.35x | > 解析+转换规则大小: > @@ -335,24 +281,16 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 -#### 3.2.2 AWS ELB Log(411B) - -表 3.2.2-1:AWS ELB Log(Parse + Transform;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **913,300** | 358.00 | 880% / 942% | 228 MB / 248 MB | **2.64x** | -| Vector-VRL | File -> BlackHole | 345,500 | 135.42 | 548% / 649% | 291 MB / 309 MB | 1.0x | -| Vector-Fixed | File -> BlackHole | 446,111 | 174.86 | 506% / 597% | 276 MB / 295 MB | 1.29x | -| Logstash | File -> BlackHole | 147,058 | 57.64 | 525% / 701% | 1121 MB / 1170 MB | 0.43x | -| **WarpParse** | TCP -> BlackHole | **757,600** | 296.97 | 714% / 758% | 270 MB / 360 MB | **2.04x** | -| Vector-VRL | TCP -> BlackHole | 370,900 | 145.38 | 561% / 607% | 284 MB / 293 MB | 1.0x | -| Vector-Fixed | TCP -> BlackHole | 481,700 | 188.81 | 466% / 536% | 265 MB / 272 MB | 1.30x | -| Logstash | TCP -> BlackHole | 222,222 | 87.10 | 795% / 889% | 1336 MB / 1377 MB | 0.60x | -| **WarpParse** | TCP -> File | **319,900** | 125.39 | 540% / 600% | 321 MB / 432 MB | **3.87x** | -| Vector-VRL | TCP -> File | 82,700 | 32.42 | 242% / 257% | 272 MB / 288 MB | 1.0x | -| Vector-Fixed | TCP -> File | 83,600 | 32.77 | 211% / 220% | 260 MB / 274 MB | 1.01x | -| Logstash | TCP -> File | 200,000 | 78.39 | 750% / 881% | 1289 MB / 1325 MB | 2.42x | +#### 3.2.2 AWS ELB Log(410B) + +表 3.2.2-1:AWS ELB Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :---------------- | :------- | +| **WarpParse** | **700,000** | 273.70 | 926% / 958% | 300 MB / 312 MB | 1.89x | +| Vector-VRL | 370,900 | 145.02 | 561% / 607% | 284 MB / 293 MB | 1.0x | +| Vector-Fixed | 481,700 | 188.35 | 466% / 536% | 265 MB / 272 MB | 1.30x | +| Logstash | 222,222 | 86.89 | 795% / 889% | 1336 MB / 1377 MB | 0.60x | > 解析+转换规则大小: > @@ -363,21 +301,15 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 -#### 3.2.3 Firewall Log (1K) +#### 3.2.3 Firewall Log (1122B) -表 3.2.3-1:Firewall Log(Parse Only;File -> BlackHole / TCP -> BlackHole / TCP -> File) +表 3.2.3-1:Firewall Log(Parse + Transform;TCP -> BlackHole) -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :---------------- | :-------- | -| **WarpParse** | File -> BlackHole | **382,500** | 409.28 | 912% / 960% | 181 MB / 194 MB | **3.44x** | -| Vector-VRL | File -> BlackHole | 111,081 | 118.86 | 450% / 530% | 295 MB / 320 MB | 1.0x | -| Logstash | File -> BlackHole | 49,019 | 52.45 | 894% / 927% | 1180 MB / 1219 MB | 0.37x | -| **WarpParse** | TCP -> BlackHole | **288,300** | 308.49 | 679% / 696% | 238 MB / 242 MB | **1.77x** | -| Vector-VRL | TCP -> BlackHole | 163,300 | 174.73 | 683% / 757% | 416 MB / 432 MB | 1.0x | -| Logstash | TCP -> BlackHole | 51,546 | 55.16 | 879% / 922% | 1253 MB / 1281 MB | 0.32x | -| **WarpParse** | TCP -> File | **224,500** | 240.22 | 798% / 818% | 481 MB / 488 MB | **3.04x** | -| Vector-VRL | TCP -> File | 73,900 | 79.07 | 378% / 442% | 412 MB / 426 MB | 1.00x | -| Logstash | TCP -> File | 50,000 | 53.50 | 884% / 934% | 1256 MB / 1289 MB | 0.68x | +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :---------------- | :------- | +| **WarpParse** | **465,500** | 498.10 | 923% / 951% | 410 MB / 428 MB | 2.85x | +| Vector-VRL | 163,300 | 174.73 | 683% / 757% | 416 MB / 432 MB | 1.0x | +| Logstash | 51,546 | 55.16 | 879% / 922% | 1253 MB / 1281 MB | 0.32x | 解析规则大小: @@ -387,48 +319,34 @@ 在同一日志类型 + 同一拓扑下,以 Vector-VRL的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 -#### 3.2.4 APT Threat Log (3K) +#### 3.2.4 APT Threat Log (3546B) -表 3.2.4-1:APT Threat Log(Parse + Transform;File -> BlackHole / TCP -> BlackHole / TCP -> File) +表 3.2.4-1:APT Threat Log(Parse + Transform;TCP -> BlackHole) -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :------ | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **299,400** | 1012.79 | 763% / 855% | 155 MB / 162 MB | **8.12x** | -| Vector-VRL | File -> BlackHole | 36,857 | 124.68 | 567% / 654% | 268 MB / 286 MB | 1.0x | -| Logstash | File -> BlackHole | 26,315 | 89.02 | 852% / 901% | 1256 MB / 1305 MB | 0.71x | -| **WarpParse** | TCP -> BlackHole | **279,700** | 946.14 | 762% / 784% | 335 MB / 345 MB | **5.38x** | -| Vector-VRL | TCP -> BlackHole | 52,000 | 175.90 | 862% / 907% | 400 MB / 416 MB | 1.0x | -| Logstash | TCP -> BlackHole | 27,027 | 91.42 | 846% / 926% | 1379 MB / 1413 MB | 0.52x | -| **WarpParse** | TCP -> File | **89,900** | 304.11 | 355% / 377% | 300 MB / 324 MB | **2.41x** | -| Vector-VRL | TCP -> File | 37,300 | 126.18 | 664% / 750% | 392 MB / 411 MB | 1.0x | -| Logstash | TCP -> File | 25,641 | 86.74 | 819% / 936% | 1300 MB / 1356 MB | 0.69x | +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :------ | :------------- | :---------------- | :------- | +| **WarpParse** | **370,100** | 1251.58 | 880% /914% | 463 MB / 477 MB | 7.12x | +| Vector-VRL | 52,000 | 175.85 | 862% / 907% | 400 MB / 416 MB | 1.0x | +| Logstash | 27,027 | 91.40 | 846% / 926% | 1379 MB / 1413 MB | 0.52x | > 解析+转换规则大小: > > - WarpParse:1638B > - Vector-VRL:1382B > - Logstash:2041B -> ->在同一日志类型 + 同一拓扑下,以 Vector-VRL的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - -#### 3.2.5 Mixed Log (平均日志大小:886B) - -表 3.2.5-1:Mixed Log(Parse + Transform;File -> BlackHole / TCP -> BlackHole / TCP -> File) - -| 引擎 | 拓扑 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------------- | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | File -> BlackHole | **659,700** | 557.42 | 889% / 940% | 170 MB / 184 MB | **3.80x** | -| Vector-VRL | File -> BlackHole | 173,750 | 146.81 | 784% / 860% | 278 MB / 299 MB | 1.0x | -| Vector-Fixed | File -> BlackHole | 178,261 | 150.62 | 772% / 836% | 273 MB / 298 MB | 1.03x | -| Logstash | File -> BlackHole | 50,505 | 42.67 | 911% / 939% | 1249 MB / 1276 MB | 0.29x | -| **WarpParse** | TCP -> BlackHole | **543,100** | 458.90 | 799% / 824% | 394 MB / 479 MB | **2.61x** | -| Vector-VRL | TCP -> BlackHole | 208,200 | 175.92 | 878% / 925% | 319 MB / 334 MB | 1.0x | -| Vector-Fixed | TCP -> BlackHole | 206,600 | 174.57 | 919% / 936% | 296 MB / 321 MB | 0.99x | -| Logstash | TCP -> BlackHole | 94,339 | 79.71 | 878% / 941% | 1285 MB / 1318 MB | 0.45x | -| **WarpParse** | TCP -> File | **299,900** | 253.40 | 616% / 754% | 332 MB / 493 MB | **3.86x** | -| Vector-VRL | TCP -> File | 77,600 | 65.57 | 397% / 421% | 363 MB / 374 MB | 1.0x | -| Vector-Fixed | TCP -> File | 78,100 | 65.99 | 400% / 421% | 337 MB / 358 MB | 1.01x | -| Logstash | TCP -> File | 93,153 | 78.71 | 859% / 957% | 1274 MB / 1308 MB | 1.20x | +> +> 在同一日志类型 + 同一拓扑下,以 Vector-VRL的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + +#### 3.2.5 Mixed Log (平均日志大小:1260B) + +表 3.2.5-1:Mixed Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :---------------- | :------- | +| **WarpParse** | **470,500** | 565.44 | 894% / 931% | 403 MB / 417 MB | 2.98x | +| Vector-VRL | 157,700 | 189.52 | 916% / 951% | 289 MB / 303 MB | 1.0x | +| Vector-Fixed | 157,400 | 189.16 | 919% / 936% | 278 MB / 300 MB | 1.00x | +| Logstash | 94,339 | 113.38 | 878% / 941% | 1285 MB / 1318 MB | 0.60x | > 解析+转换规则大小: > @@ -443,22 +361,8 @@ > > 混合日志规则: > -> - 4类日志按照3:2:1:1混合 -> - -#### 3.2.6 Mixed Log (平均日志大小:867B) - -表 3.2.6-1:Mixed Log(Parse Only; TCP -> BlackHole ) - -| 引擎 | 拓扑 | CPU (Avg/Peak) | MEM (Avg/Peak) | -| :------------ | :--------------- | :------------- | :---------------- | -| **WarpParse** | TCP -> BlackHole | 61% / 82% | 101 MB / 106 MB | -| Vector-VRL | TCP -> BlackHole | 116% / 143% | 191 MB / 194 MB | -| Vector-Fixed | TCP -> BlackHole | 125% / 146% | 153 MB / 156 MB | -| Logstash | TCP -> BlackHole | 159% / 192% | 1119 MB / 1191 MB | - -> - **20000EPS**下的资源消耗情况 -> - logstash在warmup后采集 +> - 4类日志按照1:1:3:1混合 +> - 平均日志大小:(239 + 410 + 1122 × 3 + 3546) / 6 = 1260.17B ## 4. 结果解读 @@ -467,9 +371,9 @@ **结果摘要**: -1. 在 Mac 平台测试中,WarpParse 相对 Vector-VRL 的 EPS 倍数范围为:解析 **1.42x - 8.78x**,解析+转换 **1.35x - 8.44x**;峰值出现在 Nginx 的 TCP -> File 拓扑。 +1. 在 Mac 平台 `TCP -> BlackHole` 测试中,WarpParse 相对 Vector-VRL 的 EPS 倍数范围为:解析 **1.90x - 9.18x**,解析+转换 **1.42x - 7.12x**;峰值出现在 APT Threat Log 场景。 2. 在**同等事件量**下,WarpParse 场景的 CPU 使用率整体高于 Vector/Logstash(见各表);吞吐提升与 CPU 占用同时出现。 -3. APT (3K) 场景下,WarpParse 的 MPS 最高为 **1109.53 MiB/s**(File -> BlackHole);Vector 在同场景的 EPS/MPS 相对更低(见 3.1.4/3.2.4)。 +3. APT (3546B) 场景下,WarpParse 的 MPS 最高为 **1583.66 MiB/s**(Parse Only;TCP -> BlackHole);Vector 在同场景的 EPS/MPS 相对更低(见 3.1.4/3.2.4)。 ### 4.2 规则与表达能力要点 @@ -477,38 +381,38 @@ 也可作为衡量引擎在表达同等日志语义时所需复杂度的参考指标。 在相同解析与转换语义下,规则体积越小,通常意味着引擎具备更高层级的内置能力或更强的表达抽象。 - - 各日志类型与拓扑下的规则体积差异见对应表格“规则大小”备注, + - 各日志类型下的规则体积差异见对应表格“规则大小”备注, 用于辅助评估不同引擎在表达能力、规则可读性与维护复杂度方面的差异。 - Vector 测试同时包含 VRL 与 Fixed 两种策略: - VRL 更偏向通用表达能力,对复杂语义具备更强灵活性; - Fixed 优先使用内置解析能力,在规则体积与维护复杂度上更具优势。 - 两者在表达能力与性能上的权衡以表格数据为准。 + 两者在表达能力与性能上的权衡以表格数据为准。 - - 在多数日志类型下,TCP → File 拓扑呈现更高的性能倍数区间(见 3.1 / 3.2 对应表格), - 该结论在不同规则复杂度水平下均保持一致。 + - 当前结果仅覆盖 TCP -> BlackHole 拓扑,后续如补充其他拓扑数据, + 应在同一日志类型、同一测试能力下单独归一化对比。 ### 4.3 稳定性 * 本报告未引入背压/队列深度等专用指标,稳定性判断仅基于运行期间吞吐与资源观测。 -* **注意点**: TCP -> File 大包场景下内存随吞吐上升(APT 场景峰值约 508 MB;Mixed 约 493 MB),需结合容量规划。 +* **注意点**: TCP -> BlackHole 大包场景下内存占用随规则复杂度和吞吐变化,需结合容量规划。 ## 5. 阶段性总结与建议 以下为基于本报告范围的阶段性观察,不构成生产选型结论;实际落地需结合业务流量、架构约束与运维能力评估。 -| 决策维度 | 建议方案 | 结果要点 | 依据 | -| :----------------- | :------- | :------- | :--------------------------------------------------------------------------------------------------------------------------- | -| **追求吞吐能力** | **WarpParse** | 关注本报告中的 EPS 倍数区间 | 解析场景 **1.42x-8.78x**,解析+转换 **1.35x-8.44x**;TCP -> File 拓扑区间更高。 | -| **资源受限环境** | **WarpParse** | 关注 CPU/内存的权衡关系 | 虽然峰值 CPU 较高,但完成同等数据量所需的总 CPU 时间更少;小包场景内存控制优异。 | -| **边缘/Agent部署** | **WarpParse** | 关注规则体积与单机吞吐 | 规则体积在不同日志类型间存在差异;吞吐指标在本报告中更高,具体差异见各节“规则大小”和表格数据。 | -| **通用生态兼容** | **WarpParse** | 关注生态与可扩展性 | 提供面向开发者的 API 与插件扩展机制,支持用户快速开发自定义输入 / 输出模块;在满足性能要求的同时,也具备良好的生态扩展能力。 | +| 决策维度 | 建议方案 | 结果要点 | 依据 | +| :----------------- | :------------ | :-------------------------- | :--------------------------------------------------------------------------------------------------------------------------- | +| **追求吞吐能力** | **WarpParse** | 关注本报告中的 EPS 倍数区间 | TCP -> BlackHole 下,解析场景 **1.90x-9.18x**,解析+转换 **1.42x-7.12x**。 | +| **资源受限环境** | **WarpParse** | 关注 CPU/内存的权衡关系 | 虽然峰值 CPU 较高,但完成同等数据量所需的总 CPU 时间更少;小包场景内存控制优异。 | +| **边缘/Agent部署** | **WarpParse** | 关注规则体积与单机吞吐 | 规则体积在不同日志类型间存在差异;吞吐指标在本报告中更高,具体差异见各节“规则大小”和表格数据。 | +| **通用生态兼容** | **WarpParse** | 关注生态与可扩展性 | 提供面向开发者的 API 与插件扩展机制,支持用户快速开发自定义输入 / 输出模块;在满足性能要求的同时,也具备良好的生态扩展能力。 | **阶段性结论**: - 基于本报告数据,WarpParse 与 Vector-VRL 的 EPS 倍数区间为:纯解析 **1.42x-8.78x**,解析+转换 **1.35x-8.44x**,端到端(TCP -> File)倍数更高。上述结果可作为同类场景的阶段性基线参考;在大包 TCP -> File 场景需关注内存随吞吐上升(约 490-510MB)。 + 基于本报告数据,WarpParse 与 Vector-VRL 在 `TCP -> BlackHole` 拓扑下的 EPS 倍数区间为:纯解析 **1.90x-9.18x**,解析+转换 **1.42x-7.12x**。上述结果可作为同类网络接收与处理场景的阶段性基线参考。 ## 6. 已知限制与注意事项 * 本报告为单机测试,未覆盖多节点、HA(High Availability,高可用)、持久化优化或生产负载波动等因素。 -* 测试范围限定为五类日志与三种拓扑,未覆盖更复杂的输入/输出链路。 +* 测试范围限定为五类日志与 TCP -> BlackHole 拓扑,未覆盖更复杂的输入/输出链路。 * 结果依赖具体硬件、操作系统与存储配置,跨环境对比需谨慎。 From e816b753486cc0d7ad6e6ac376f95417f689af9e Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Fri, 3 Jul 2026 14:35:58 +0800 Subject: [PATCH 06/13] update mixed --- benchmark/models/wpl/mixed/sample.dat | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/benchmark/models/wpl/mixed/sample.dat b/benchmark/models/wpl/mixed/sample.dat index bc95020f..ee0bef78 100644 --- a/benchmark/models/wpl/mixed/sample.dat +++ b/benchmark/models/wpl/mixed/sample.dat @@ -1,7 +1,6 @@ 180.57.30.148 - - [21/Jan/2025:01:40:02 +0800] "GET /nginx-logo.png HTTP/1.1" 500 368 "http://207.131.38.110/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-" -180.57.30.148 - - [21/Jan/2025:01:40:02 +0800] "GET /nginx-logo.png HTTP/1.1" 500 368 "http://207.131.38.110/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-" -180.57.30.148 - - [21/Jan/2025:01:40:02 +0800] "GET /nginx-logo.png HTTP/1.1" 500 368 "http://207.131.38.110/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36" "-" -http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 http 2018-11-30T22:23:00.186641Z app/my-lb 192.168.1.10:2000 10.0.0.15:8080 0.01 0.02 0.01 200 200 100 200 "POST https://api.example.com/u?p=1&sid=2&t=3 HTTP/1.1" "Mozilla/5.0 (Win) Chrome/90" "ECDHE" "TLSv1.3" arn:aws:elb:us:123:tg "Root=1-test" "api.example.com" "arn:aws:acm:us:123:cert/short" 1 2018-11-30T22:22:48.364000Z "forward" "https://auth.example.com/r" "err" "10.0.0.1:80" "200" "cls" "rsn" TID_x1 2018-01-30 13:12:21 Security +01:00 Block: type=FWD|action=BLOCK|proto=UDP|ipVersion=4|srcIF=eth0|srcZone=LAN|srcIP=10.17.34.12|srcPort=54915|srcMAC=18:db:f2:13:ca:9c|srcNAT=0.0.0.0|srcCountry=CN|srcASN=4134|dstIF=eth1|dstZone=WAN|dstIP=10.17.34.255|dstPort=54915|dstService=custom_udp|dstNAT=0.0.0.0|dstCountry=US|dstASN=15169|rule=BLOCKALL|ruleType=FirewallPolicy|policyId=policy_10234|policyGroup=corp_default|interfaceGroup=internal_to_external|routingTable=main|connState=NEW|sessionId=843920184|sessionDuration=0|receivedPackets=0|sentPackets=0|receivedBytes=0|sentBytes=0|packetCount=1|byteCount=60|tcpFlags=|icmpType=|icmpCode=|application=unknown|applicationRisk=0|applicationCategory=unclassified|protocolDetection=enabled|detectedProtocol=udp_generic|user=john.doe|userGroup=employees|authMethod=ldap|vpnType=none|vpnTunnelId=0|contentProfile=default|contentAction=none|url=http://example.com/resource|urlCategory=uncategorized|threatLevel=0|threatName=none|signatureId=0|signatureVersion=0|limitProfile=default|rateLimitPps=1200|rateLimitBps=768000|logSource=box_firewall_activity|logType=activity|logVersion=1 +2018-01-30 13:12:21 Security +01:00 Block: type=FWD|action=BLOCK|proto=UDP|ipVersion=4|srcIF=eth0|srcZone=LAN|srcIP=10.17.34.12|srcPort=54915|srcMAC=18:db:f2:13:ca:9c|srcNAT=0.0.0.0|srcCountry=CN|srcASN=4134|dstIF=eth1|dstZone=WAN|dstIP=10.17.34.255|dstPort=54915|dstService=custom_udp|dstNAT=0.0.0.0|dstCountry=US|dstASN=15169|rule=BLOCKALL|ruleType=FirewallPolicy|policyId=policy_10234|policyGroup=corp_default|interfaceGroup=internal_to_external|routingTable=main|connState=NEW|sessionId=843920184|sessionDuration=0|receivedPackets=0|sentPackets=0|receivedBytes=0|sentBytes=0|packetCount=1|byteCount=60|tcpFlags=|icmpType=|icmpCode=|application=unknown|applicationRisk=0|applicationCategory=unclassified|protocolDetection=enabled|detectedProtocol=udp_generic|user=john.doe|userGroup=employees|authMethod=ldap|vpnType=none|vpnTunnelId=0|contentProfile=default|contentAction=none|url=http://example.com/resource|urlCategory=uncategorized|threatLevel=0|threatName=none|signatureId=0|signatureVersion=0|limitProfile=default|rateLimitPps=1200|rateLimitBps=768000|logSource=box_firewall_activity|logType=activity|logVersion=1 +2018-01-30 13:12:21 Security +01:00 Block: type=FWD|action=BLOCK|proto=UDP|ipVersion=4|srcIF=eth0|srcZone=LAN|srcIP=10.17.34.12|srcPort=54915|srcMAC=18:db:f2:13:ca:9c|srcNAT=0.0.0.0|srcCountry=CN|srcASN=4134|dstIF=eth1|dstZone=WAN|dstIP=10.17.34.255|dstPort=54915|dstService=custom_udp|dstNAT=0.0.0.0|dstCountry=US|dstASN=15169|rule=BLOCKALL|ruleType=FirewallPolicy|policyId=policy_10234|policyGroup=corp_default|interfaceGroup=internal_to_external|routingTable=main|connState=NEW|sessionId=843920184|sessionDuration=0|receivedPackets=0|sentPackets=0|receivedBytes=0|sentBytes=0|packetCount=1|byteCount=60|tcpFlags=|icmpType=|icmpCode=|application=unknown|applicationRisk=0|applicationCategory=unclassified|protocolDetection=enabled|detectedProtocol=udp_generic|user=john.doe|userGroup=employees|authMethod=ldap|vpnType=none|vpnTunnelId=0|contentProfile=default|contentAction=none|url=http://example.com/resource|urlCategory=uncategorized|threatLevel=0|threatName=none|signatureId=0|signatureVersion=0|limitProfile=default|rateLimitPps=1200|rateLimitBps=768000|logSource=box_firewall_activity|logType=activity|logVersion=1 #Feb 7 2025 15:07:18+08:00 USG1000E %%01ANTI-APT/4/ANTI-APT(l)[29]: An advanced persistent threat was detected. (SyslogId=1, VSys="public-long-virtual-system-name-for-testing-extra-large-value-to-simulate-enterprise-scenario", Policy="trust-untrust-high-risk-policy-with-deep-inspection-and-layer7-protection-enabled-for-advanced-threat-detection", SrcIp=192.168.1.123, DstIp=182.150.63.102, SrcPort=51784, DstPort=10781, SrcZone=trust-zone-with-multiple-segments-for-internal-security-domains-and-access-control, DstZone=untrust-wide-area-network-zone-with-external-facing-interfaces-and-honeynet-integration, User="unknown-long-user-field-used-for-simulation-purpose-with-extra-description-and-tags-[tag1][tag2][tag3]-to-reach-required-size", Protocol=TCP, Application="HTTP-long-application-signature-identification-with-multiple-behavior-patterns-and-deep-packet-inspection-enabled", Profile="IPS_default_advanced_extended_profile_with_ml_detection-long", Direction=aaa-long-direction-field-used-to-extend-size-with-additional-info-about-traffic-orientation-from-client-to-server, ThreatType=File Reputation with additional descriptive context of multi-layer analysis engine including sandbox-behavioral-signature-ml-static-analysis-and-network-correlation-modules-working-together, ThreatName=bbb-advanced-threat-campaign-with-code-name-operation-shadow-storm-and-related-IOCs-collected-over-multiple-incidents-in-the-wild-attached-metadata-[phase1][phase2][phase3], Action=ccc-block-and-alert-with-deep-scan-followed-by-quarantine-and-forensic-dump-generation-for-further-investigation, FileType=ddd-executable-binary-with-multiple-packed-layers-suspicious-import-table-behavior-and-evasion-techniques, Hash=eee1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef-long-hash-value-used-for-testing-purpose-extended-with-multiple-hash-representations-[MD5:aaa111bbb222ccc333]-[SHA1:bbb222ccc333ddd444]-[SHA256:ccc333ddd444eee555]-[SSDEEP:ddd444eee555fff666]-end-of-hash-section, ExtraInfo="This is additional extended information purposely added to inflate the total log size for stress testing of log ingestion engines such as Vector, Fluent Bit, self-developed ETL pipelines, and any high-throughput log processing systems. It contains repeated segments to simulate realistic verbose threat intelligence attachment blocks. [SEG-A-BEGIN] The threat was part of a coordinated multi-vector campaign observed across various geographic regions targeting enterprise networks with spear-phishing, watering-hole attacks, and supply-chain compromise vectors. Enriched indicators include C2 domains, malware families, behavioral clusters, sandbox detonation traces, and network telemetry correlation. [SEG-A-END] [SEG-B-BEGIN] Further analysis revealed that the payload exhibited persistence techniques including registry autoruns, scheduled tasks, masquerading, process injection, and lateral movement attempts leveraging remote service creation and stolen credentials. The binary contains multiple obfuscation layers, anti-debugging, anti-VM checks, and unusual API call sequences. [SEG-B-END] [SEG-C-BEGIN] IOC Bundle: Domains=malicious-domain-example-01.com,malicious-domain-example-02.net,malicious-update-service.info; IPs=103.21.244.0,198.51.100.55,203.0.113.77; FileNames=update_service.exe,winlog_service.dll,mscore_update.bin; RegistryKeys=HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run,HKLM\\System\\Services\\FakeService; Mutex=Global\\A1B2C3D4E5F6G7H8; YARA Matches=[rule1,rule2,rule3]. [SEG-C-END] EndOfExtraInfo") From 32eede262ddcc42b48d8b1e312ce8f2e2a351b5f Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Fri, 3 Jul 2026 14:36:21 +0800 Subject: [PATCH 07/13] add linux_monitor script --- benchmark/monitor_linux.sh | 168 +++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 benchmark/monitor_linux.sh diff --git a/benchmark/monitor_linux.sh b/benchmark/monitor_linux.sh new file mode 100644 index 00000000..c40c6af8 --- /dev/null +++ b/benchmark/monitor_linux.sh @@ -0,0 +1,168 @@ +#!/bin/bash +# monitor.sh (v6 - 仅 CPU/内存均值与峰值) +# 保留核心功能:监控指定进程的 CPU 与内存,输出平均值和峰值。 +show_help() { + cat << EOF +用法: $0 <进程名> [监控间隔] [总时长] [输出文件] + +参数说明: + 进程名 必填,要监控的进程名称 (例如 vector, wpflow) + 监控间隔 采样间隔秒数 (默认: 1 秒) + 总时长 监控总时长秒数 (默认: 30 秒) + 输出文件 监控结果保存路径 (默认: monitoring_report.txt) + +示例: + $0 vector + # 监控 vector 进程,间隔 1 秒,总时长 30 秒 + + $0 wpflow 2 60 wpflow_report.txt + # 监控 wpflow 进程,间隔 2 秒,总时长 60 秒,结果保存到 wpflow_report.txt +EOF +} + +# --- 如果传 -h 或 --help 就打印帮助并退出 --- +if [[ "$1" == "-h" || "$1" == "--help" ]]; then + show_help + exit 0 +fi + +# --- 参数解析(带默认值) --- +PROCESS_NAME=${1} +INTERVAL=${2:-1} +DURATION=${3:-30} +OUTFILE=${4:-"monitoring_report.txt"} + +if [ -z "$PROCESS_NAME" ]; then + echo "错误: 必须提供要监控的进程名作为第一个参数。" >&2 + echo "使用 $0 --help 查看帮助。" >&2 + exit 1 +fi + +echo "--- [1/3] 正在查找进程 '$PROCESS_NAME' ---" + +# 确保 pidstat 可用;若缺失则尝试安装(需具备相应权限) +if ! command -v pidstat >/dev/null 2>&1; then + echo "未找到 pidstat,尝试安装..." + if command -v apt-get >/dev/null 2>&1; then + sudo apt-get update && sudo apt-get install -y sysstat + elif command -v yum >/dev/null 2>&1; then + sudo yum install -y sysstat + elif command -v dnf >/dev/null 2>&1; then + sudo dnf install -y sysstat + elif command -v zypper >/dev/null 2>&1; then + sudo zypper install -y sysstat + elif command -v pacman >/dev/null 2>&1; then + sudo pacman -Sy --noconfirm sysstat + else + echo "无法自动安装 pidstat,请手动安装 sysstat 包后重试。" >&2 + exit 1 + fi + + if ! command -v pidstat >/dev/null 2>&1; then + echo "自动安装 pidstat 失败,请手动安装 sysstat 包后重试。" >&2 + exit 1 + fi + echo "pidstat 已安装。" +fi + +PIDS=$(pgrep -x "$PROCESS_NAME") + +if [ -z "$PIDS" ]; then + echo "错误: 找不到正在运行的 '$PROCESS_NAME' 进程。" >&2 + exit 1 +fi + +pid_count=$(echo "$PIDS" | wc -l | xargs) +if [ "$pid_count" -gt 1 ]; then + echo "⚠️ 发现多个 '$PROCESS_NAME' 进程,请选择一个:" + select pid in $PIDS; do + if [ -n "$pid" ]; then + break + fi + done +else + pid=$PIDS +fi + +echo "✅ 成功找到进程,PID: $pid" +echo "----------------------------------" + +# --- 2. 执行监控 --- +echo "--- [2/3] 开始监控 ---" +echo "监控进程名: $PROCESS_NAME" +echo "监控 PID: $pid" +echo "采样间隔: $INTERVAL 秒" +echo "总时长: $DURATION 秒" +echo "结果将写入: $OUTFILE" +echo "----------------------------------" + +cpu_sum=0 +cpu_max=0 +mem_sum=0 +mem_max=0 +count=0 + +start_time=$(date +%s) +end_time=$((start_time + DURATION)) + +> "$OUTFILE" + +while [ "$(date +%s)" -lt "$end_time" ]; do + if ! ps -p "$pid" > /dev/null; then + echo "⚠️ 目标进程 PID '$pid' 已退出,监控提前结束。" >&2 + break + fi + + read -r cpu mem_kb < <(pidstat -u -r -p "$pid" 1 1 | awk ' + /%CPU/ { getline; cpu_val=$8 } + /RSS/ { getline; mem_val=$7 } + END { if (cpu_val == "") cpu_val="N/A"; if (mem_val == "") mem_val="N/A"; print cpu_val, mem_val } + ') + + if [[ "$cpu" =~ ^[0-9]+([.][0-9]+)?$ && "$mem_kb" =~ ^[0-9]+([.][0-9]+)?$ ]]; then + mem_mb=$(awk "BEGIN {print $mem_kb / 1024}") + printf "实时: CPU %5.1f%% | Mem %8.2f MB\n" "$cpu" "$mem_mb" + + cpu_sum=$(awk "BEGIN {print $cpu_sum + $cpu}") + mem_sum=$(awk "BEGIN {print $mem_sum + $mem_mb}") + + cpu_max=$(awk "BEGIN {print ($cpu > $cpu_max) ? $cpu : $cpu_max}") + mem_max=$(awk "BEGIN {print ($mem_mb > $mem_max) ? $mem_mb : $mem_max}") + + count=$((count + 1)) + else + echo "⚠️ 无法从 pidstat 输出中获取有效数据。CPU='$cpu', Mem='$mem_kb'" >&2 + fi + + sleep "$INTERVAL" +done + +echo "----------------------------------" +echo "--- [3/3] 生成监控报告 ---" + +if [ $count -eq 0 ]; then + echo "❌ 错误: 没有采集到任何有效数据。" >&2 + exit 1 +fi + +cpu_avg=$(awk "BEGIN {print $cpu_sum/$count}") +mem_avg=$(awk "BEGIN {print $mem_sum/$count}") + +{ + echo "========== 性能监控汇总 ==========" + echo "监控时间: $(date)" + echo "进程名: $PROCESS_NAME" + echo "PID: $pid" + echo "采样次数: $count 次" + echo "------------------------------------" + printf "平均 CPU 使用率: %.2f %%\n" "$cpu_avg" + printf "峰值 CPU 使用率: %.2f %%\n" "$cpu_max" + echo "------------------------------------" + printf "平均内存使用 (RSS): %.2f MB\n" "$mem_avg" + printf "峰值内存使用 (RSS): %.2f MB\n" "$mem_max" + echo "====================================" +} > "$OUTFILE" + +echo "✅ 监控结束,汇总报告已保存到: $OUTFILE" +echo +cat "$OUTFILE" From 019f3cf404d9a4e9bca102f0d928b101b4ea615d Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Sat, 4 Jul 2026 11:13:57 +0800 Subject: [PATCH 08/13] fix: remove incorrect linux_report --- benchmark/report/report_linux.md | 171 ++++++++++++++----------------- 1 file changed, 76 insertions(+), 95 deletions(-) diff --git a/benchmark/report/report_linux.md b/benchmark/report/report_linux.md index 01dd7adc..4b5de9a4 100644 --- a/benchmark/report/report_linux.md +++ b/benchmark/report/report_linux.md @@ -40,8 +40,6 @@ #### 平台信息(Platform) - - **平台类型**:AWS EC2 - - **实例规格(Instance Type)**:c5a.4xlarge - **操作系统**:Ubuntu 24.04 LTS - **系统架构**:x86_64 - 网络环境:本机回环(127.0.0.1,Loopback) @@ -49,34 +47,16 @@ #### 计算资源(Compute) - **CPU**:16 vCPU - - **CPU 型号**:AMD EPYC 7R32 - **内存**:32 GiB - #### 存储配置(Storage) - - - **存储类型**:Amazon EBS - - **卷类型**:通用型 SSD(gp3) - - **卷大小**:128 GiB - - **IOPS**:30,000 - - **吞吐量**:200 MiB/s - - #### 说明(Notes) - - - gp3 卷支持 IOPS 与吞吐量独立配置,用于避免容量与性能强绑定 - - 当前配置提供较高的随机 I/O 能力(IOPS),并具备中等顺序 I/O 吞吐能力 - - 网络带宽/网卡能力: - - 本报告中的 TCP 场景均基于本机 loopback(127.0.0.1)进行数据发送与接收; - - 测试流量不经过物理网卡或云实例网络链路,不受实例网络带宽或 ENI 性能限制; - - TCP 场景主要反映内核 TCP 协议栈开销与引擎自身的解析、调度与 I/O 处理能力。 - ### 2.2 测试范畴 (Scope) * **日志类型**: * **Nginx Access Log** (239B): 典型 Web 访问日志,高吞吐场景。 - * **AWS ELB Log** (411B): 云设施负载均衡日志,中等复杂度。 - * **Firewall Log** (1K): 终端安全监控日志,JSON 结构,字段较多。 - * **APT Threat Log** (3K): 模拟的高级持续性威胁日志,大体积、长文本。 - * **Mixed Log** (886B): 上述四类日志混合形成的日志类型。 + * **AWS ELB Log** (410B): 云设施负载均衡日志,中等复杂度。 + * **Firewall Log** (1122B): 终端安全监控日志,JSON 结构,字段较多。 + * **APT Threat Log** (3546B): 模拟的高级持续性威胁日志,大体积、长文本。 + * **Mixed Log** (1260B): 上述四类日志按 1:1:3:1 混合形成的日志类型。 * **数据拓扑**: * **TCP -> BlackHole**: 测算网络接收与处理能力。 * **测试能力**: @@ -100,7 +80,6 @@ - 采样来源与采样口径说明: - EPS:统一基于各引擎原生可观测性或统计接口获取。 - WarpParse / Vector:使用引擎内置的吞吐统计能力。 - - Logstash:通过自动化脚本定期采集其官方 Monitoring API / 运行时统计信息。 - CPU / MEM:通过外部监控脚本采集测试进程的资源使用情况(基于 shell 的周期性采样),用于跨引擎对比。 - MPS:基于测得的 EPS 与对应日志的平均大小进行换算计算,用于辅助衡量实际数据吞吐规模。 - 规则大小统计前对配置进行了统一去注释/去空行处理,仅保留有效表达部分,降低格式差异影响。 @@ -165,13 +144,13 @@ 下表为结果索引,用于定位不同日志类型与测试能力的明细表格。 - | 日志类型 | 解析(Parse Only) | 解析 + 转换(Parse + Transform) | - | :----------------------------- | :----------------- | :------------------------------- | - | Nginx Access Log (239B) | 见 3.1.1 | 见 3.2.1 | - | AWS ELB Log (411B) | 见 3.1.2 | 见 3.2.2 | - | Firewall Log (1K) | 见 3.1.3 | 见 3.2.3 | - | APT Threat Log (3K) | 见 3.1.4 | 见 3.2.4 | - | Mixed Log (平均日志大小:867B) | 见 3.1.5 | 见 3.2.5 | + | 日志类型 | 解析(Parse Only) | 解析 + 转换(Parse + Transform) | + | :------------------------------ | :----------------- | :------------------------------- | + | Nginx Access Log (239B) | 见 3.1.1 | 见 3.2.1 | + | AWS ELB Log (410B) | 见 3.1.2 | 见 3.2.2 | + | Firewall Log (1122B) | 见 3.1.3 | 见 3.2.3 | + | APT Threat Log (3546B) | 见 3.1.4 | 见 3.2.4 | + | Mixed Log (平均日志大小:1260B) | 见 3.1.5 | 见 3.2.5 | ### 3.1 日志解析能力 (Parse Only) @@ -181,11 +160,11 @@ 表 3.1.1-1:Nginx Access Log(Parse Only;TCP -> BlackHole) -| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | **778,100** | | 727% / 775% | 131 MB / 182 MB | | -| Vector-VRL | 1,040,400 | 237.14 | 673% / 718% | 328 MB / 350 MB | 1.0x | -| Vector-Fixed | 667,500 | 152.14 | 790% / 894% | 300 MB / 314 MB | 0.64x | +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :------------ | :----- | :------------- | :-------------- | :------- | +| **WarpParse** | **2,260,000** | 515.12 | 1419% / 1433% | 156 MB / 190 MB | 1.93x | +| Vector-VRL | 1,172,100 | 267.15 | 693% / 713% | 321 MB / 330 MB | 1.00x | +| Vector-Fixed | 804,500 | 183.37 | 868% / 899% | 300 MB / 309 MB | 0.69x | > 解析规则大小: > @@ -195,15 +174,15 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - #### 3.1.2 AWS ELB Log (411B) + #### 3.1.2 AWS ELB Log (410B) 表 3.1.2-1:AWS ELB Log(Parse Only;TCP -> BlackHole) -| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | **429,800** | | 762% / 779% | 202 MB / 245 MB | | -| Vector-VRL | 287,900 | 112.57 | 587% / 611% | 321 MB / 330 MB | 1.0x | -| Vector-Fixed | 343,400 | 134.27 | 489% / 529% | 325 MB / 344 MB | 1.19x | +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :------------ | :----- | :------------- | :-------------- | :------- | +| **WarpParse** | **1,165,000** | 455.52 | 1337% / 1454% | 288 MB / 452 MB | 3.81x | +| Vector-VRL | 305,600 | 119.49 | 517% / 569% | 316 MB / 326 MB | 1.00x | +| Vector-Fixed | 357,900 | 139.94 | 426% / 506% | 330 MB / 340 MB | 1.17x | > 解析规则大小: > @@ -213,14 +192,14 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - #### 3.1.3 Firewall Log (1K) + #### 3.1.3 Firewall Log (1122B) 表 3.1.3-1: Firewall Log(Parse Only;TCP -> BlackHole) | 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | | :------------ | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | **265,200** | | 783% / 787% | 379 MB / 403 MB | | -| Vector | 147,100 | 157.40 | 941% / 1085% | 441 MB / 456 MB | 1.00x | +| **WarpParse** | **688,500** | 736.71 | 1259% / 1275% | 473 MB / 700 MB | 4.09x | +| Vector | 168,200 | 179.98 | 911% / 1011% | 435 MB / 448 MB | 1.00x | > 解析规则大小: > @@ -229,14 +208,14 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - #### 3.1.4 APT Threat Log (3K) + #### 3.1.4 APT Threat Log (3546B) 表 3.1.4-1:APT Threat Log(Parse Only;TCP -> BlackHole) | 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | | :------------ | :---------- | :------ | :------------- | :-------------- | :------- | -| **WarpParse** | **390,100** | 1319.21 | 1295% / 1301% | 154 MB / 163 MB | 6.26x | -| Vector | 62,300 | 210.68 | 1510% / 1596% | 419 MB / 464 MB | 1.0x | +| **WarpParse** | **500,100** | 1691.20 | 1303% / 1328% | 182 MB / 200 MB | 6.16x | +| Vector | 81,200 | 274.60 | 1532% / 1588% | 436 MB / 459 MB | 1.00x | > 解析规则大小: > @@ -245,15 +224,15 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - #### 3.1.5 Mixed Log (平均日志大小:886B) + #### 3.1.5 Mixed Log (平均日志大小:1260B) 表 3.1.5-1:Mixed Log(Parse Only;TCP -> BlackHole) | 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | | :------------ | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | **683,300** | 577.36 | 1218% / 1281% | 134 MB / 146 MB | 2.69x | -| Vector-VRL | 253,700 | 214.37 | 1530% / 1569% | 413 MB / 427 MB | 1.00x | -| Vector-Fixed | 250,900 | 212.00 | 1566% / 1577% | 392 MB / 410 MB | 0.99x | +| **WarpParse** | **721,500** | 867.09 | 1376% / 1409% | 639 MB / 808 MB | 3.09x | +| Vector-VRL | 233,600 | 280.74 | 1377% / 1425% | 439 MB / 454 MB | 1.00x | +| Vector-Fixed | 228,400 | 274.49 | 1359% / 1386% | 416 MB / 454 MB | 0.98x | > 解析规则大小: > @@ -267,22 +246,22 @@ > > 混合日志规则: > - > - 4类日志按照3:2:1:1混合 + > - 4类日志按照1:1:3:1混合 ### 3.2 解析 + 转换能力 (Parse + Transform) 本节给出解析 + 转换场景的测试结果。 - #### 3.2.1 Nginx Access Log(239B) + #### 3.2.1 Nginx Access Log (239B) 表 3.2.1-1:Nginx Access Log(Parse + Transform;TCP -> BlackHole) | 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | | :------------ | :------------ | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | **1,146,800** | 261.39 | 1212% / 1318% | 106 MB / 220 MB | 1.39x | -| Vector-VRL | 827,800 | 188.68 | 692% / 703% | 342 MB / 355 MB | 1.0x | -| Vector-Fixed | 521,200 | 118.80 | 803% / 834% | 300 MB / 308 MB | 0.63x | +| **WarpParse** | **1,508,200** | 343.76 | 1401% / 1419% | 126 MB / 306 MB | 1.69x | +| Vector-VRL | 889,900 | 202.83 | 662% / 675% | 344 MB / 351 MB | 1.00x | +| Vector-Fixed | 582,600 | 132.79 | 777% / 815% | 305 MB / 320 MB | 0.65x | > 解析+转换规则大小: > @@ -292,15 +271,15 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - #### 3.2.2 AWS ELB Log(411B) + #### 3.2.2 AWS ELB Log (410B) 表 3.2.2-1:AWS ELB Log(Parse + Transform;TCP -> BlackHole) | 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | | :------------ | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | **637,700** | 249.34 | 1525% / 1538% | 181 MB / 415 MB | 2.58x | -| Vector-VRL | 247,200 | 96.66 | 562% / 590% | 341 MB / 356 MB | 1.0x | -| Vector-Fixed | 293,500 | 114.76 | 516% / 559% | 353 MB / 389 MB | 1.19x | +| **WarpParse** | **768,000** | 300.29 | 1545% / 1564% | 262 MB / 576 MB | 2.75x | +| Vector-VRL | 279,700 | 109.36 | 554% / 588% | 354 MB / 361 MB | 1.00x | +| Vector-Fixed | 308,200 | 120.51 | 500% / 513% | 358 MB / 368 MB | 1.10x | > 解析+转换规则大小: > @@ -310,14 +289,14 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - #### 3.2.3 Firewall Log (1K) + #### 3.2.3 Firewall Log (1122B) 表 3.2.3-1:Firewall Log(Parse + Transform;TCP -> BlackHole) -| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | -| :------------ | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | **374,400** | 400.62 | 1425% / 1479% | 507 MB / 846 MB | 2.95x | -| Vector | 127,100 | 136.00 | 840% / 920% | 487 MB / 530 MB | 1.00x | +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :----- | :------------- | :--------------- | :------- | +| **WarpParse** | **492,100** | 526.56 | 1515% / 1546% | 535 MB / 1018 MB | 3.43x | +| Vector | 143,500 | 153.55 | 838% / 872% | 514 MB / 533 MB | 1.00x | > 解析+转换规则大小: > @@ -326,14 +305,14 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - #### 3.2.4 APT Threat Log (3K) + #### 3.2.4 APT Threat Log (3546B) 表 3.2.4-1:APT Threat Log(Parse + Transform;TCP -> BlackHole) | 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | | :------------ | :---------- | :------ | :------------- | :-------------- | :------- | -| **WarpParse** | **324,000** | 1095.68 | 1417% / 1431% | 188 MB / 235 MB | 5.49x | -| Vector | 59,000 | 199.52 | 1457% / 1592% | 444 MB / 474 MB | 1.0x | +| **WarpParse** | **392,100** | 1325.98 | 1435% / 1461% | 229 MB / 356 MB | 4.85x | +| Vector | 80,800 | 273.24 | 1531% / 1592% | 457 MB / 503 MB | 1.00x | > 解析+转换规则大小: > @@ -342,15 +321,15 @@ > > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 - #### 3.2.5 Mixed Log (平均日志大小:886B) + #### 3.2.5 Mixed Log (平均日志大小:1260B) 表 3.2.5-1:Mixed Log(Parse + Transform;TCP -> BlackHole) | 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | | :------------ | :---------- | :----- | :------------- | :-------------- | :------- | -| **WarpParse** | **514,100** | 434.39 | 1305% / 1424% | 221 MB / 262 MB | 2.13x | -| Vector-VRL | 241,900 | 204.39 | 1525% / 1559% | 419 MB / 434 MB | 1.00x | -| Vector-Fixed | 233,800 | 197.55 | 1553% / 1569% | 401 MB / 416 MB | 0.97x | +| **WarpParse** | **502,900** | 604.38 | 1522% / 1532% | 177 MB / 232 MB | 2.48x | +| Vector-VRL | 202,700 | 243.60 | 1264% / 1298% | 435 MB / 459 MB | 1.00x | +| Vector-Fixed | 198,400 | 238.43 | 1258% / 1294% | 424 MB / 438 MB | 0.98x | > 解析+转换规则大小: > @@ -364,7 +343,7 @@ > > 混合日志规则: > - > - 4类日志按照3:2:1:1混合 + > - 4类日志按照1:1:3:1混合 ## 5. 结果解读 @@ -373,42 +352,44 @@ **结果摘要**: - 1. 在 Linux 平台 `TCP -> BlackHole` 测试中,WarpParse 相对 Vector-VRL 的 EPS 倍数范围为:解析 **1.56x - 6.26x**,解析+转换 **1.39x - 5.49x**;峰值出现在 APT Threat Log 场景。 - 2. CPU 使用率在 WarpParse 场景中整体高于 Vector/Logstash(见各表);吞吐提升与 CPU 占用同时出现。 - 3. APT (3K) 场景下,WarpParse 的 MPS 最高为 **1319.21 MiB/s**(Parse Only;TCP -> BlackHole);Vector 在同场景的 EPS/MPS 相对更低(见 3.1.4/3.2.4)。 + 1. 在 Linux 平台 `TCP -> BlackHole` 测试中,WarpParse 在所有日志类型和能力场景中均取得最高 EPS。相对 Vector-VRL/Vector 的 EPS 倍数范围为:解析 **1.93x - 6.16x**,解析+转换 **1.69x - 4.85x**。 + 2. 吞吐优势在大日志场景中更明显。APT Threat Log (3546B) 是本次测试的最高数据吞吐场景,WarpParse 在 Parse Only 下达到 **1691.20 MiB/s**,在 Parse + Transform 下达到 **1325.98 MiB/s**。 + 3. 纯解析场景中,WarpParse 的 MPS 从 Nginx 的 **515.12 MiB/s** 提升到 APT 的 **1691.20 MiB/s**;解析+转换场景中,MPS 从 Nginx 的 **343.76 MiB/s** 提升到 APT 的 **1325.98 MiB/s**。这说明大体积日志下,EPS 下降但单条日志体积带来的数据吞吐仍显著上升。 + 4. CPU 表现需要结合吞吐一起看。Nginx、AWS、Firewall 的部分场景中,WarpParse CPU 使用率高于 Vector;但在 APT 与 Mixed 等复杂或混合场景中,WarpParse 在更高 EPS/MPS 下 CPU 使用率并不总是更高。例如 APT Parse Only 中 WarpParse 为 **1303% / 1328%**,Vector 为 **1532% / 1588%**。 + 5. 内存方面,WarpParse 在 Nginx、APT、Mixed 等场景通常低于 Vector;Firewall 场景内存压力最高,Parse + Transform 下 WarpParse 峰值达到 **1018 MB**,需要在大字段 JSON 或复杂转换场景中纳入容量规划。 - * ### 5.2 规则与表达能力要点 + ### 5.2 规则与表达能力要点 - - 规则体积不仅反映配置分发与维护成本, - 也可作为衡量引擎在表达同等日志语义时所需复杂度的参考指标。 - 在相同解析与转换语义下,规则体积越小,通常意味着引擎具备更高层级的内置能力或更强的表达抽象。 + - 规则体积不仅反映配置分发与维护成本, + 也可作为衡量引擎在表达同等日志语义时所需复杂度的参考指标。 + 在相同解析与转换语义下,规则体积越小,通常意味着引擎具备更高层级的内置能力或更强的表达抽象。 - - 各日志类型与拓扑下的规则体积差异见对应表格“规则大小”备注, - 用于辅助评估不同引擎在表达能力、规则可读性与维护复杂度方面的差异。 + - 各日志类型与拓扑下的规则体积差异见对应表格“规则大小”备注, + 用于辅助评估不同引擎在表达能力、规则可读性与维护复杂度方面的差异。 - - Vector 测试同时包含 VRL 与 Fixed 两种策略: - - VRL 更偏向通用表达能力,对复杂语义具备更强灵活性; - - Fixed 优先使用内置解析能力,在规则体积与维护复杂度上更具优势。 - 两者在表达能力与性能上的权衡以表格数据为准。 + - Vector 测试同时包含 VRL 与 Fixed 两种策略: + - VRL 更偏向通用表达能力,对复杂语义具备更强灵活性; + - Fixed 优先使用内置解析能力,在规则体积与维护复杂度上更具优势。 + 两者在表达能力与性能上的权衡以表格数据为准。本次测试中,Vector-Fixed 在 AWS 场景快于 Vector-VRL(Parse Only 为 **1.17x**,Parse + Transform 为 **1.10x**),但在 Nginx 与 Mixed 场景未形成稳定优势。 ### 5.3 稳定性 * 本报告未引入背压/队列深度等专用指标,稳定性判断仅基于运行期间吞吐与资源观测。 - * **注意点**: TCP -> BlackHole 大包场景下内存随吞吐上升,需结合容量规划。 + * **注意点**: TCP -> BlackHole 场景主要反映接收、解析与转换处理能力,不包含持久化输出链路;大日志与复杂转换场景下仍需结合内存峰值、队列深度、输出端背压进行生产容量评估。 ## 6. 阶段性总结与建议 以下为基于本报告范围的阶段性观察,不构成生产选型结论;实际落地需结合业务流量、架构约束与运维能力评估。 -| 决策维度 | 建议方案 | 结果要点 | 依据 | -| :----------------- | :------------ | :-------------------------- | :--------------------------------------------------------------------------------------------- | -| **追求吞吐能力** | **WarpParse** | 关注本报告中的 EPS 倍数区间 | TCP -> BlackHole 下,解析场景 **1.56x - 6.26x**,解析+转换 **1.39x - 5.49x**。 | -| **资源受限环境** | **WarpParse** | 关注 CPU/内存的权衡关系 | Vector-VRL 在多数场景下 CPU/MEM 低于 WarpParse;Logstash 内存占用显著更高(见各表)。 | +| 决策维度 | 建议方案 | 结果要点 | 依据 | +| :----------------- | :------------ | :-------------------------- | :----------------------------------------------------------- | +| **追求吞吐能力** | **WarpParse** | 关注本报告中的 EPS 倍数区间 | TCP -> BlackHole 下,解析场景 **1.93x - 6.16x**,解析+转换 **1.69x - 4.85x**。 | +| **资源受限环境** | **WarpParse** | 关注 CPU/内存的权衡关系 | Vector-VRL 在多数场景下 CPU/MEM 低于 WarpParse;Logstash 内存占用显著更高(见各表)。 | | **边缘/Agent部署** | **WarpParse** | 关注规则体积与单机吞吐 | 规则体积在不同日志类型间存在差异;吞吐指标在本报告中更高,具体差异见各节“规则大小”和表格数据。 | -| **通用生态兼容** | **WarpParse** | 关注生态与可扩展性 | 生态兼容性未在本报告中量化,建议结合现有生态与插件适配成本评估。 | +| **通用生态兼容** | **WarpParse** | 关注生态与可扩展性 | 生态兼容性未在本报告中量化,建议结合现有生态与插件适配成本评估。 | **阶段性结论**: - 基于本报告数据,WarpParse 与 Vector-VRL 在 `TCP -> BlackHole` 拓扑下的 EPS 倍数区间为:纯解析 **1.56x - 6.26x**,解析+转换 **1.39x - 5.49x**。上述结果可作为同类网络接收与处理场景的阶段性基线参考。 + 基于本报告数据,WarpParse 与 Vector-VRL 在 `TCP -> BlackHole` 拓扑下的 EPS 倍数区间为:纯解析 **1.93x - 6.16x**,解析+转换 **1.69x - 4.85x**。上述结果可作为同类网络接收与处理场景的阶段性基线参考。 ## 7. 已知限制与注意事项 From 9b0379eb7eaf6d6ee7eb5e18b5a7c7193b0ebe73 Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Sat, 4 Jul 2026 11:42:09 +0800 Subject: [PATCH 09/13] add 2weps test_Scene --- benchmark/report/report_mac.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/benchmark/report/report_mac.md b/benchmark/report/report_mac.md index 1a5266fc..1230851e 100644 --- a/benchmark/report/report_mac.md +++ b/benchmark/report/report_mac.md @@ -257,6 +257,20 @@ > - 4类日志按照1:1:3:1混合 > - 平均日志大小:(239 + 410 + 1122 × 3 + 3546) / 6 = 1260.17B +#### 3.1.6 Mixed Log (平均日志大小:1260B) + +表 3.1.6-1:Mixed Log(Parse Only; TCP -> BlackHole ) + +| 引擎 | 拓扑 | CPU (Avg/Peak) | MEM (Avg/Peak) | +| ------------- | ---------------- | -------------- | ----------------- | +| **WarpParse** | TCP -> BlackHole | 74% / 88% | 96 MB / 100 MB | +| Vector-VRL | TCP -> BlackHole | 155% / 186% | 135 MB / 142 MB | +| Vector-Fixed | TCP -> BlackHole | 153% / 180% | 135 MB / 139 MB | +| Logstash | TCP -> BlackHole | 159% / 192% | 1119 MB / 1191 MB | + +> - **20000EPS**下的资源消耗情况 +> - logstash在warmup后采集 + ### 3.2 解析 + 转换能力 (Parse + Transform) 本节给出解析 + 转换场景的测试结果。 @@ -364,6 +378,20 @@ > - 4类日志按照1:1:3:1混合 > - 平均日志大小:(239 + 410 + 1122 × 3 + 3546) / 6 = 1260.17B +#### 3.2.6 Mixed Log (平均日志大小:1260B) + +表 3.1.6-1:Mixed Log(Parse Only; TCP -> BlackHole ) + +| 引擎 | 拓扑 | CPU (Avg/Peak) | MEM (Avg/Peak) | +| ------------- | ---------------- | -------------- | ----------------- | +| **WarpParse** | TCP -> BlackHole | 98% / 114% | 92 MB / 96 MB | +| Vector-VRL | TCP -> BlackHole | 142% / 168% | 148 MB / 158 MB | +| Vector-Fixed | TCP -> BlackHole | 139% / 165% | 138 MB / 150 MB | +| Logstash | TCP -> BlackHole | 159% / 192% | 1119 MB / 1191 MB | + +> - **20000EPS**下的资源消耗情况 +> - logstash在warmup后采集 + ## 4. 结果解读 From 495fe9d321bb98614e04f0a2c99ec3fa621622ce Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Sat, 4 Jul 2026 16:41:40 +0800 Subject: [PATCH 10/13] add 8C_linux_report --- benchmark/report/report_linux8C.md | 449 +++++++++++++++++++++++++++++ 1 file changed, 449 insertions(+) create mode 100644 benchmark/report/report_linux8C.md diff --git a/benchmark/report/report_linux8C.md b/benchmark/report/report_linux8C.md new file mode 100644 index 00000000..edf99afa --- /dev/null +++ b/benchmark/report/report_linux8C.md @@ -0,0 +1,449 @@ +# WarpParse、Vector、Logstash 性能基准测试报告 + + ## 1. 技术概述与测试背景 + + ### 1.1 测试背景 + + 本报告记录在 Linux 平台完成的单机基准测试结果,覆盖从轻量级 Web 日志到复杂安全威胁日志的典型场景,用于形成阶段性 benchmark 基线,便于后续版本或方案之间的横向与纵向对比。本文仅描述测试方法与结果,不对生产环境性能上限作外推。 + + ### 1.2 被测对象 + + * **WarpParse**: 大禹安全公司研发的 ETL 核心引擎,采用 Rust 构建。 + * **Vector**: 开源可观测性数据管道工具,采用 Rust 构建。 + * Vector-VRL:基于 VRL 的 `parse_regex` 进行正则解析。 + * Vector-Fixed:尽量使用内置解析(如 nginx/aws 内置函数;sysmon 直接 JSON 解析;APT 无专用手段仍使用正则)。 + * **Logstash**: Elastic 生态的日志处理引擎,采用 JVM 运行时。 + + ### 1.3 测试对象与版本说明 + + 本次测试使用版本如下: + + * **WarpParse**:0.24.12 + +* **Vector**:0.54.0 + +* **Logstash**:9.4.3 + + 构建与来源信息: + + * **WarpParse**:构建来源/commit/tag = GitHub tag v0.24.12-beta (commit: 2ba6e55);构建参数 = 官方 release 构建产物(zip/tar.gz),未修改构建选项 + * **Vector**:构建来源/commit/tag = v0.54.0 (commit: dc7e792);构建参数 = 官方发布的 release 二进制,未修改构建选项 + * **Logstash**:构建来源/commit/tag = GitHub tag v9.4.3 (commit: 4eb0f3f);构建参数 = 官方发行包(zip / tar.gz,bundled JDK),未进行源码级构建 + + 本报告已记录版本与构建来源;复现时仍需确保引擎运行参数、系统配置与数据集参数一致。 + + ### 1.4 报告定位 + + 本文档定位为阶段性 benchmark 报告,侧重方法与数据的可复现性与长期可比性,不作为最终性能结论或生产容量承诺。 + + + ## 2. 测试环境与方法 + + ### 2.1 测试环境(Test Environment) + + #### 平台信息(Platform) + + - **操作系统**:Ubuntu 24.04 LTS + - **系统架构**:x86_64 + - 网络环境:本机回环(127.0.0.1,Loopback) + + #### 计算资源(Compute) + + - **CPU**:8 vCPU + - **内存**:16 GiB + + ### 2.2 测试范畴 (Scope) + + * **日志类型**: + * **Nginx Access Log** (239B): 典型 Web 访问日志,高吞吐场景。 + * **AWS ELB Log** (410B): 云设施负载均衡日志,中等复杂度。 + * **Firewall Log** (1122B): 终端安全监控日志,JSON 结构,字段较多。 + * **APT Threat Log** (3546B): 模拟的高级持续性威胁日志,大体积、长文本。 + * **Mixed Log** (1260B): 上述四类日志按 1:1:3:1 混合形成的日志类型。 + * **数据拓扑**: + * **TCP -> BlackHole**: 测算网络接收与处理能力。 + * **测试能力**: + * **解析 (Parse)**: 仅进行正则提取/KV解析与字段标准化。 + * **解析+转换 (Parse+Transform)**: 在解析基础上增加字段映射、富化、类型转换等逻辑。 + + ### 2.3 评估指标 + + * **EPS (Events Per Second)**: 每秒处理事件数(核心吞吐指标)。 + * **MPS (MiB/s)**: 每秒处理数据量。 + * **CPU (Avg/Peak)**: 测试进程 CPU 使用率的平均值与峰值。 + * **MEM (Avg/Peak)**: 测试进程内存占用的平均值与峰值。 + * **Rule Size**: 规则配置文件体积,评估分发与维护成本。 + * **性能倍数**: 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 为 1.0x 进行归一化。 + + 说明: + + * CPU 为多核累计百分比(例如 800% ≈ 8 个逻辑核满载),统计对象为**测试进程本身**(非系统总 CPU),由外部监控脚本按固定采样周期采集并计算 Avg/Peak。 + * MPS 换算公式:**MPS = EPS × AvgLogSize(B) / 1024 / 1024**。 + + - 采样来源与采样口径说明: + - EPS:统一基于各引擎原生可观测性或统计接口获取。 + - WarpParse / Vector:使用引擎内置的吞吐统计能力。 + - CPU / MEM:通过外部监控脚本采集测试进程的资源使用情况(基于 shell 的周期性采样),用于跨引擎对比。 + - MPS:基于测得的 EPS 与对应日志的平均大小进行换算计算,用于辅助衡量实际数据吞吐规模。 + - 规则大小统计前对配置进行了统一去注释/去空行处理,仅保留有效表达部分,降低格式差异影响。 + - 各指标在不同引擎中的采集实现方式可能不同,但统计口径保持一致,结果以各指标最权威来源为准。 + + ### 2.4 测试方法与执行方式 + + 测试在单机环境中按日志类型与拓扑逐项执行。输入数据由本仓库提供的 benchmark 脚本生成或回放, + 测试过程中各引擎独立运行,避免相互干扰。 + 输出目标根据测试拓扑配置为 BlackHole 或 File,以分别评估纯处理能力与包含 I/O 的端到端性能。 + + 测试执行流程、脚本入口及通用参数说明见 benchmark/README.md。 + +### 2.4.1 最小复现清单(Minimal Repro Checklist) + + - 引擎版本与来源: + + - WarpParse / Vector 的版本、tag、commit 及构建方式见 1.3。 + + - Benchmark 工具链版本: + + - benchmark 仓库以 wp-example 仓库的最新提交(repo HEAD)为准。 + - 复现实验时建议记录具体 commit hash 以保证结果可追溯。 + + - 数据规模与事件数量: + + - 本报告中“数据集规模”与“事件数量”为同一概念,均以处理的事件总数作为规模定义。 + - 在 WarpParse 的 benchmark 执行脚本中,通过参数 `-c` 指定事件总数; + 该参数用于明确数据集规模,但并非要求所有引擎具备相同参数形式。 + - 因此,`-c` 可视为本 benchmark 中“统一事件规模定义”的符号化表示, + 而非跨引擎通用的命令行参数。 + + - 结束条件: + + - 所有测试均以处理完成等量事件作为结束条件。 + - 不采用按固定运行时长结束的方式, + 以避免不同引擎在启动、预热与稳定阶段差异带来的统计偏差。 + +- Warmup 与采样窗口: + + - WarpParse 与 Vector:引擎启动后快速进入稳定状态,未单独区分 warmup 阶段。 + - 重复次数与取值规则: + - 默认单次运行。 + - 如需更严格统计,建议重复 N=3 次并取 median 作为最终结果。 + +- Warmup 与采样窗口: + +- WarpParse 与 Vector:引擎启动后快速进入稳定状态,未单独区分 warmup 阶段。 + +- 重复次数与取值规则: + + - 默认单次运行。 + - 如需更严格统计,建议重复 N=3 次并取 median 作为最终结果。 + + ### 2.5 默认配置与调优说明 + + 除非表格或备注中明确说明,本报告结果基于各引擎默认配置,未开启专项性能调优或非默认参数。 + + ## 3. 详细吞吐量性能对比分析 + + ### 3.0 测试结果汇总表 + + 下表为结果索引,用于定位不同日志类型与测试能力的明细表格。 + + | 日志类型 | 解析(Parse Only) | 解析 + 转换(Parse + Transform) | + | :------------------------------ | :----------------- | :------------------------------- | + | Nginx Access Log (239B) | 见 3.1.1 | 见 3.2.1 | + | AWS ELB Log (410B) | 见 3.1.2 | 见 3.2.2 | + | Firewall Log (1122B) | 见 3.1.3 | 见 3.2.3 | + | APT Threat Log (3546B) | 见 3.1.4 | 见 3.2.4 | + | Mixed Log (平均日志大小:1260B) | 见 3.1.5 | 见 3.2.5 | + + ### 3.1 日志解析能力 (Parse Only) + + 本节给出纯解析场景的测试结果。 + + #### 3.1.1 Nginx Access Log (239B) + + 表 3.1.1-1:Nginx Access Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :------------ | :--- | :------------- | :---------------- | :------- | +| **WarpParse** | **1,097,800** | 250.22 | 778% / 784% | 156 MB / 234 MB | 1.25x | +| Vector-VRL | 880,900 | 200.78 | 504% / 532% | 167 MB / 169 MB | 1.00x | +| Vector-Fixed | 520,700 | 118.68 | 551% / 568% | 157 MB / 169 MB | 0.59x | +| Logstash | 434,782 | 99.10 | 571% / 743% | 1361 MB / 1453 MB | 0.49x | + + > 解析规则大小: + > + > - WarpParse:174B + > - Vector-VRL:217B + > - Vector-Fixed:86B + > - Logstash:248B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.1.2 AWS ELB Log (410B) + + 表 3.1.2-1:AWS ELB Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :--- | :------------- | :---------------- | :------- | +| **WarpParse** | **630,900** | 246.69 | 782% / 788% | 250 MB / 292 MB | 2.63x | +| Vector-VRL | 239,600 | 93.69 | 436% / 467% | 185 MB / 194 MB | 1.00x | +| Vector-Fixed | 289,400 | 113.16 | 397% / 409% | 188 MB / 194 MB | 1.21x | +| Logstash | 266,666 | 104.27 | 681% / 773% | 1408 MB / 1489 MB | 1.11x | + + > 解析规则大小: + > + > - WarpParse:1153B + > - Vector-VRL:921B + > - Vector-Fixed:64B + > - Logstash:876B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.1.3 Firewall Log (1122B) + + 表 3.1.3-1: Firewall Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :--- | :------------- | :---------------- | :------- | +| **WarpParse** | **410,500** | 439.24 | 760% / 785% | 352 MB / 444 MB | 3.60x | +| Vector | 113,900 | 121.88 | 616% / 654% | 231 MB / 240 MB | 1.00x | +| Logstash | 29,850 | 31.94 | 760% / 783% | 1475 MB / 1581 MB | 0.26x | + + > 解析规则大小: + > + > - WarpParse:1552B + > - Vector-Fixed:1852B + > - Logstash:527B + > + > 在同一日志类型 + 同一拓扑下,以 Vector 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.1.4 APT Threat Log (3546B) + + 表 3.1.4-1:APT Threat Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :--- | :------------- | :---------------- | :------- | +| **WarpParse** | **266,100** | 899.88 | 763% / 775% | 279 MB / 320 MB | 6.34x | +| Vector | 42,000 | 142.03 | 795% / 798% | 181 MB / 197 MB | 1.00x | +| Logstash | 16,393 | 55.44 | 756% / 784% | 1532 MB / 1584 MB | 0.39x | + + > 解析规则大小: + > + > - WarpParse:985B + > - Vector:873B + > - Logstash:1027B + > + > 在同一日志类型 + 同一拓扑下,以 Vector 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.1.5 Mixed Log (平均日志大小:1260B) + + 表 3.1.5-1:Mixed Log(Parse Only;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :--- | :------------- | :---------------- | :------- | +| **WarpParse** | **400,300** | 481.01 | 771% / 777% | 312 MB / 365 MB | 3.49x | +| Vector-VRL | 114,700 | 137.83 | 789% / 790% | 229 MB / 238 MB | 1.00x | +| Vector-Fixed | 113,700 | 136.63 | 785% / 791% | 220 MB / 230 MB | 0.99x | +| Logstash | 37,037 | 44.50 | 754% / 781% | 1589 MB / 1641 MB | 0.32x | + + > 解析规则大小: + > + > - WarpParse:3864B + > - Vector-VRL:3960B + > - Vector-Fixed:4725B + > - Logstash:3984B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + > + > 规则大小可能受格式/换行/注释/路径等影响,体积差异不影响性能口径;规则逻辑保持一致。 + > + > 混合日志规则: + > + > - 4类日志按照1:1:3:1混合 + +#### 3.1.6 Mixed Log (平均日志大小:1260B) + +表 3.1.6-1:Mixed Log(Parse Only; TCP -> BlackHole ) + +| 引擎 | 拓扑 | CPU (Avg/Peak) | MEM (Avg/Peak) | +| ------------- | ---------------- | -------------- | ----------------- | +| **WarpParse** | TCP -> BlackHole | 37% / 42% | 62 MB / 65 MB | +| Vector-VRL | TCP -> BlackHole | 123% / 127% | 135 MB / 141 MB | +| Vector-Fixed | TCP -> BlackHole | 124% / 126% | 133 MB / 137 MB | +| Logstash | TCP -> BlackHole | 159% / 192% | 1119 MB / 1191 MB | + +> - **20000EPS**下的资源消耗情况 +> - logstash在warmup后采集 + + + ### 3.2 解析 + 转换能力 (Parse + Transform) + + 本节给出解析 + 转换场景的测试结果。 + + #### 3.2.1 Nginx Access Log (239B) + + 表 3.2.1-1:Nginx Access Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :--- | :------------- | :---------------- | :------- | +| **WarpParse** | **831,000** | 189.41 | 785% / 788% | 129 MB / 186 MB | 1.22x | +| Vector-VRL | 678,700 | 154.69 | 498% / 514% | 178 MB / 185 MB | 1.00x | +| Vector-Fixed | 395,100 | 90.05 | 521% / 536% | 160 MB / 164 MB | 0.58x | +| Logstash | 263,157 | 59.98 | 632% / 787% | 1306 MB / 1439 MB | 0.39x | + + > 解析+转换规则大小: + > + > - WarpParse:521B + > - Vector-VRL:519B + > - Vector-Fixed:500B + > - Logstash:712B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.2.2 AWS ELB Log (410B) + + 表 3.2.2-1:AWS ELB Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :--- | :------------- | :---------------- | :------- | +| **WarpParse** | **404,300** | 158.08 | 785% / 789% | 202 MB / 331 MB | 1.88x | +| Vector-VRL | 215,500 | 84.26 | 430% / 445% | 195 MB / 203 MB | 1.00x | +| Vector-Fixed | 237,300 | 92.79 | 396% / 412% | 201 MB / 208 MB | 1.10x | +| Logstash | 125,000 | 48.88 | 734% / 791% | 1414 MB / 1534 MB | 0.58x | + + > 解析+转换规则大小: + > + > - WarpParse:1694B + > - Vector-VRL:1259B + > - Vector-Fixed:570B + > - Logstash:2019B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.2.3 Firewall Log (1122B) + + 表 3.2.3-1:Firewall Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :--- | :------------- | :---------------- | :------- | +| **WarpParse** | **260,000** | 278.21 | 788% / 791% | 570 MB / 655 MB | 2.64x | +| Vector | 98,600 | 105.50 | 581% / 601% | 249 MB / 257 MB | 1.00x | +| Logstash | 27,777 | 29.72 | 743% / 779% | 1452 MB / 1529 MB | 0.28x | + + > 解析+转换规则大小: + > + > - WarpParse:2249B + > - Vector:2344B + > - Logstash:3453B + > + > 在同一日志类型 + 同一拓扑下,以 Vector 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.2.4 APT Threat Log (3546B) + + 表 3.2.4-1:APT Threat Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :--- | :------------- | :---------------- | :------- | +| **WarpParse** | **202,600** | 685.14 | 771% / 779% | 208 MB / 222 MB | 4.91x | +| Vector | 41,300 | 139.67 | 794% / 796% | 189 MB / 213 MB | 1.00x | +| Logstash | 14814 | 50.10 | 760% / 792% | 1774 MB / 1841 MB | 0.36x | + + > 解析+转换规则大小: + > + > - WarpParse:1638B + > - Vector:1382B + > - Logstash:2041B + > + > 在同一日志类型 + 同一拓扑下,以 Vector 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + + #### 3.2.5 Mixed Log (平均日志大小:1260B) + + 表 3.2.5-1:Mixed Log(Parse + Transform;TCP -> BlackHole) + +| 引擎 | EPS | MPS | CPU (Avg/Peak) | MEM (Avg/Peak) | 性能倍数 | +| :------------ | :---------- | :--- | :------------- | :---------------- | :------- | +| **WarpParse** | **268,700** | 322.88 | 782% / 785% | 170 MB / 222 MB | 2.52x | +| Vector-VRL | 106,700 | 128.21 | 777% / 786% | 236 MB / 249 MB | 1.00x | +| Vector-Fixed | 106,200 | 127.61 | 779% / 785% | 230 MB / 238 MB | 1.00x | +| Logstash | 30303 | 36.41 | 749% / 784% | 1562 MB / 1665 MB | 0.28x | + + > 解析+转换规则大小: + > + > - WarpParse:3864B + > - Vector-VRL:4723B + > - Vector-Fixed:1733B + > - Logstash:3984B + > + > 在同一日志类型 + 同一拓扑下,以 Vector-VRL 的 EPS 作为统一基准(1.0x),对所有引擎进行归一化对比。 + > + > 规则大小可能受格式/换行/注释/路径等影响,体积差异不影响性能口径;规则逻辑保持一致。 + > + > 混合日志规则: + > + > - 4类日志按照1:1:3:1混合 + +#### 3.2.6 Mixed Log (平均日志大小:1260B) + +表 3.1.6-1:Mixed Log(Parse Only; TCP -> BlackHole ) + +| 引擎 | 拓扑 | CPU (Avg/Peak) | MEM (Avg/Peak) | +| ------------- | ---------------- | -------------- | ----------------- | +| **WarpParse** | TCP -> BlackHole | 53% / 56% | 57 MB / 63 MB | +| Vector-VRL | TCP -> BlackHole | 131% / 134% | 143 MB / 148 MB | +| Vector-Fixed | TCP -> BlackHole | 131 / 135% | 137 MB / 142 MB | +| Logstash | TCP -> BlackHole | 455% / 782% | 1518 MB / 1627 MB | + +> - **20000EPS**下的资源消耗情况 +> - logstash在warmup后采集 + + + ## 5. 结果解读 + + ### 5.1 吞吐与资源表现 + +**结果摘要**: + +1. 在 Linux 平台 `TCP -> BlackHole` 测试中,WarpParse 在所有日志类型和能力场景中均取得最高 EPS。相对 Vector-VRL/Vector 的 EPS 倍数范围为:解析 **1.25x - 6.34x**,解析+转换 **1.22x - 4.91x**。 +2. 吞吐优势在大日志场景中更明显。APT Threat Log (3546B) 是本次测试的最高数据吞吐场景,WarpParse 在 Parse Only 下达到 **899.88 MiB/s**,在 Parse + Transform 下达到 **685.14 MiB/s**。 +3. 纯解析场景中,WarpParse 的 MPS 从 Nginx 的 **250.22 MiB/s** 提升到 APT 的 **899.88 MiB/s**;解析+转换场景中,MPS 从 Nginx 的 **189.41 MiB/s** 提升到 APT 的 **685.14 MiB/s**。这说明大体积日志下,EPS 下降但单条日志体积带来的数据吞吐仍显著上升。 +4. CPU 表现需要结合吞吐一起看。Nginx、AWS、Firewall 的部分场景中,WarpParse CPU 使用率高于 Vector;但在 APT 与 Mixed 等复杂或混合场景中,WarpParse 在更高 EPS/MPS 下 CPU 使用率并不总是更高。例如 APT Parse Only 中 WarpParse 为 **763% / 775%**,Vector 为 **795% / 798%**。 +5. 内存方面,WarpParse 在 Nginx、APT、Mixed 等场景通常低于 Vector;Firewall 场景内存压力最高,Parse + Transform 下 WarpParse 峰值达到 **655 MB**,需要在大字段 JSON 或复杂转换场景中纳入容量规划。 + + ### 5.2 规则与表达能力要点 + + - 规则体积不仅反映配置分发与维护成本, + 也可作为衡量引擎在表达同等日志语义时所需复杂度的参考指标。 + 在相同解析与转换语义下,规则体积越小,通常意味着引擎具备更高层级的内置能力或更强的表达抽象。 + + - 各日志类型与拓扑下的规则体积差异见对应表格“规则大小”备注, + 用于辅助评估不同引擎在表达能力、规则可读性与维护复杂度方面的差异。 + + - Vector 测试同时包含 VRL 与 Fixed 两种策略: + - VRL 更偏向通用表达能力,对复杂语义具备更强灵活性; + - Fixed 优先使用内置解析能力,在规则体积与维护复杂度上更具优势。 + 两者在表达能力与性能上的权衡以表格数据为准。本次测试中,Vector-Fixed 在 AWS 场景快于 Vector-VRL(Parse Only 为 **1.21x**,Parse + Transform 为 **1.10x**),但在 Nginx 与 Mixed 场景未形成稳定优势。 + + ### 5.3 稳定性 + + * 本报告未引入背压/队列深度等专用指标,稳定性判断仅基于运行期间吞吐与资源观测。 + * **注意点**: TCP -> BlackHole 场景主要反映接收、解析与转换处理能力,不包含持久化输出链路;大日志与复杂转换场景下仍需结合内存峰值、队列深度、输出端背压进行生产容量评估。 + + ## 6. 阶段性总结与建议 + + 以下为基于本报告范围的阶段性观察,不构成生产选型结论;实际落地需结合业务流量、架构约束与运维能力评估。 + +| 决策维度 | 建议方案 | 结果要点 | 依据 | +| :----------------- | :------------ | :-------------------------- | :----------------------------------------------------------- | +| **追求吞吐能力** | **WarpParse** | 关注本报告中的 EPS 倍数区间 | TCP -> BlackHole 下,解析场景 **1.25x - 6.34x**,解析+转换 **1.22x - 4.91x**。 | +| **资源受限环境** | **WarpParse** | 关注 CPU/内存的权衡关系 | Vector-VRL 在多数场景下 CPU/MEM 低于 WarpParse;Logstash 内存占用显著更高(见各表)。 | +| **边缘/Agent部署** | **WarpParse** | 关注规则体积与单机吞吐 | 规则体积在不同日志类型间存在差异;吞吐指标在本报告中更高,具体差异见各节“规则大小”和表格数据。 | +| **通用生态兼容** | **WarpParse** | 关注生态与可扩展性 | 生态兼容性未在本报告中量化,建议结合现有生态与插件适配成本评估。 | + + **阶段性结论**: + 基于本报告数据,WarpParse 与 Vector-VRL/Vector 在 `TCP -> BlackHole` 拓扑下的 EPS 倍数区间为:纯解析 **1.25x - 6.34x**,解析+转换 **1.22x - 4.91x**。上述结果可作为同类网络接收与处理场景的阶段性基线参考。 + + ## 7. 已知限制与注意事项 + + * 本报告为单机测试,未覆盖多节点、HA(High Availability,高可用)、持久化优化或生产负载波动等因素。 + * 测试范围限定为五类日志与三种拓扑,未覆盖更复杂的输入/输出链路。 + * 结果依赖具体硬件、操作系统与存储配置,跨环境对比需谨慎。 From 00e1e1bfbecfa874fb6fadad79c492ede19746c9 Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Sat, 4 Jul 2026 16:51:19 +0800 Subject: [PATCH 11/13] update cloud-instance info --- benchmark/report/report_linux8C.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/benchmark/report/report_linux8C.md b/benchmark/report/report_linux8C.md index edf99afa..f529f2fb 100644 --- a/benchmark/report/report_linux8C.md +++ b/benchmark/report/report_linux8C.md @@ -43,7 +43,7 @@ #### 平台信息(Platform) - - **操作系统**:Ubuntu 24.04 LTS + - **操作系统**:Ubuntu Server 24.04 LTS 64位 - **系统架构**:x86_64 - 网络环境:本机回环(127.0.0.1,Loopback) @@ -51,6 +51,17 @@ - **CPU**:8 vCPU - **内存**:16 GiB + - **GPU**:0 + + #### 云主机实例信息(CVM) + + - **实例类型 / 规格**:标准型SA9 / SA9.2XLARGE16 + - **镜像 ID**:img-mmytdhbn + - **系统盘**:CLOUD_HSSD,50 GiB + - **公网带宽**:5 Mbps + - **网络类型**:Default-VPC + + 说明:本 benchmark 的数据拓扑为 `TCP -> BlackHole`,测试链路使用本机回环地址(127.0.0.1),公网带宽不参与吞吐测量。 ### 2.2 测试范畴 (Scope) From bb113b73d5112e9212743e768d13aa494ba5a9b4 Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Sat, 4 Jul 2026 16:57:49 +0800 Subject: [PATCH 12/13] update cloud-instance cpu-model --- benchmark/report/report_linux8C.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/benchmark/report/report_linux8C.md b/benchmark/report/report_linux8C.md index f529f2fb..fd83b1da 100644 --- a/benchmark/report/report_linux8C.md +++ b/benchmark/report/report_linux8C.md @@ -50,12 +50,16 @@ #### 计算资源(Compute) - **CPU**:8 vCPU + - **CPU 型号**:AMD EPYC 9K65 192-Core Processor + - **CPU 厂商**:AuthenticAMD + - **vCPU 拓扑**:1 Socket × 4 Core/Socket × 2 Thread/Core + - **虚拟化**:KVM - **内存**:16 GiB - **GPU**:0 #### 云主机实例信息(CVM) - - **实例类型 / 规格**:标准型SA9 / SA9.2XLARGE16 + - **机器型号(云主机规格)**:标准型SA9 / SA9.2XLARGE16 - **镜像 ID**:img-mmytdhbn - **系统盘**:CLOUD_HSSD,50 GiB - **公网带宽**:5 Mbps From 6f02b0a1396fb4077b4aac31cd9cba8f1c41ed23 Mon Sep 17 00:00:00 2001 From: datasc31 <1179113719@qq.com> Date: Sat, 4 Jul 2026 17:11:18 +0800 Subject: [PATCH 13/13] update 16C-cloud info --- benchmark/report/report_linux.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/benchmark/report/report_linux.md b/benchmark/report/report_linux.md index 4b5de9a4..656e2f49 100644 --- a/benchmark/report/report_linux.md +++ b/benchmark/report/report_linux.md @@ -40,14 +40,29 @@ #### 平台信息(Platform) - - **操作系统**:Ubuntu 24.04 LTS + - **操作系统**:Ubuntu Server 24.04 LTS 64位 - **系统架构**:x86_64 - 网络环境:本机回环(127.0.0.1,Loopback) #### 计算资源(Compute) - **CPU**:16 vCPU + - **CPU 型号**:AMD EPYC 9K65 192-Core Processor + - **CPU 厂商**:AuthenticAMD + - **vCPU 拓扑**:1 Socket × 8 Core/Socket × 2 Thread/Core + - **虚拟化**:KVM - **内存**:32 GiB + - **GPU**:0 + + #### 云主机实例信息(CVM) + + - **机器型号(云主机规格)**:标准型SA9 / SA9.4XLARGE32 + - **镜像 ID**:img-mmytdhbn + - **系统盘**:CLOUD_HSSD,50 GiB + - **公网带宽**:10 Mbps + - **网络类型**:Default-VPC + + 说明:本 benchmark 的数据拓扑为 `TCP -> BlackHole`,测试链路使用本机回环地址(127.0.0.1),公网带宽不参与吞吐测量。 ### 2.2 测试范畴 (Scope) @@ -395,4 +410,4 @@ * 本报告为单机测试,未覆盖多节点、HA(High Availability,高可用)、持久化优化或生产负载波动等因素。 * 测试范围限定为五类日志与三种拓扑,未覆盖更复杂的输入/输出链路。 - * 结果依赖具体硬件、操作系统与存储配置,跨环境对比需谨慎。 \ No newline at end of file + * 结果依赖具体硬件、操作系统与存储配置,跨环境对比需谨慎。