From 05eb6ed0c3eb1f03c63274f31e20c2ec71e789aa Mon Sep 17 00:00:00 2001 From: Taylor Gray Date: Mon, 11 Apr 2022 15:57:16 -0500 Subject: [PATCH] Documentation of performance test 1.3 Signed-off-by: Taylor Gray --- docs/images/DataPrepperGatling.png | Bin 0 -> 42214 bytes docs/images/LogstashGatling.png | Bin 0 -> 29432 bytes docs/images/PerformanceTestEnvironment.png | Bin 0 -> 34091 bytes .../PerformanceTestEnvironmentLogstash.png | Bin 0 -> 33292 bytes performance-test/results/results.md | 291 ++++++++++++++++++ 5 files changed, 291 insertions(+) create mode 100644 docs/images/DataPrepperGatling.png create mode 100644 docs/images/LogstashGatling.png create mode 100644 docs/images/PerformanceTestEnvironment.png create mode 100644 docs/images/PerformanceTestEnvironmentLogstash.png create mode 100644 performance-test/results/results.md diff --git a/docs/images/DataPrepperGatling.png b/docs/images/DataPrepperGatling.png new file mode 100644 index 0000000000000000000000000000000000000000..9d0f336b889444474d2c82c7495627a92ba62765 GIT binary patch literal 42214 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ξ(evl#WAy4(R0up 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 literal 0 HcmV?d00001 diff --git a/docs/images/PerformanceTestEnvironment.png b/docs/images/PerformanceTestEnvironment.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f3e678d86428a1044d486a154788da3be70e6e GIT binary patch literal 34091 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 literal 0 HcmV?d00001 diff --git a/docs/images/PerformanceTestEnvironmentLogstash.png b/docs/images/PerformanceTestEnvironmentLogstash.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9579567b71f897566ee5b54a803d9ad9d7868d GIT binary patch literal 33292 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 ZJ}`!b))cj(HoXD=i3myxl<{eM{~sp6F%JL$ literal 0 HcmV?d00001 diff --git a/performance-test/results/results.md b/performance-test/results/results.md new file mode 100644 index 0000000000..38ded791e1 --- /dev/null +++ b/performance-test/results/results.md @@ -0,0 +1,291 @@ +# Performance Test Results + +Following the release of Data Prepper 1.3, performance tests were run for each of the new processors that were added, as well as the equivalent Logstash filters. In the performance test results discussed below, the test environments and configurations are identical, except where the same option is not available for all applications. + +## Environment Details + +### Data Prepper Environment + +![](../../docs/images/PerformanceTestEnvironment.png) + +### Logstash Environment + +![](../../docs/images/PerformanceTestEnvironmentLogstash.png) + +Comparing the performance of the latest release of Data Prepper 1.3 against Logstash 7.13.2, the test was configured to simulate 10 clients to send requests as frequently as possible. Each request was contained a batch of 200 logs. The test ran for 20 minutes, measuring the latency and throughput. + +### AWS Resource Details + +| Name | EC2 Instance Type | Instance Count | vCPU | Memory (GiB) | JVM Memory Limit (GiB) | +|-----------------------------------| :---------------- | -------------: |-----:| -----------: |-----------------------:| +| Data Prepper | m5.xlarge | 1 | 4 | 16 | 8 | +| Data Prepper Prometheus + Grafana | m5.xlarge | 1 | 4 | 16 | | +| Data Prepper OpenSearch Cluster | i3.xlarge | 3 | 4 | 30.5 | | +| Logstash | m5.xlarge | 1 | 4 | 16 | 8 | +| Logstash Prometheus + Grafana | m5.xlarge | 1 | 4 | 16 | | +| Logstash OpenSearch Cluster | i3.xlarge | 3 | 4 | 30.5 | | +| Gatling | m5.2xlarge | 1 | 8 | 32 | | + +## Configurations + +The following log was sent to the `http` source of Data Prepper and Logstash in batches of 200. + +```json +{ +"log": "127.0.0.1 - frank [11/Dec/2021:10:00:00 -0700] \"GET /apache_pb.gif?paramKey1=paramValue1¶mKey2=paramValue2¶mKey3=paramValue3 HTTP/1.0\" 200 2326" +} +``` + +Ingesting this log through Data Prepper results in the following document being sent to OpenSearch. + +```json +{ + "_index": "data_prepper", + "_type": "_doc", + "_id": "BEz2BYABkvwoydO0vqsG", + "_version": 1, + "_score": null, + "_source": { + "log": "127-0-0-1 - FRANK [11/DEC/2021:10:00:00 -0700] \"GET /APACHE_PB-GIF?PARAMKEY1=PARAMVALUE1&PARAMKEY2=PARAMVALUE2&PARAMKEY3=PARAMVALUE3 HTTP/1-0\" 200 2326", + "request": [ + "/apache_pb.gif", + "paramKey1=paramValue1¶mKey2=paramValue2¶mKey3=paramValue3" + ], + "auth": "frank", + "ident": "-", + "response": "200", + "bytes": "2326", + "clientip": "127.0.0.1", + "verb": "get", + "httpversion": "1.0", + "timestamp": "11/Dec/2021:10:00:00 -0700", + "@timestamp": "2022-04-07T21:36:44.710Z", + "query_params": { + "paramKey2": "paramValue2", + "paramKey3": "paramValue3", + "paramKey1": "paramValue1" + }, + "copy_key": "127-0-0-1 - FRANK [11/DEC/2021:10:00:00 -0700] \"GET /APACHE_PB-GIF?PARAMKEY1=PARAMVALUE1&PARAMKEY2=PARAMVALUE2&PARAMKEY3=PARAMVALUE3 HTTP/1-0\" 200 2326" + } +} +``` + +The configuration files include the following sources, processors, and sinks. + +### Sources +* http + +### Processors +* grok +* date +* substitute_string +* uppercase_string +* lowercase_string +* trim_string +* split_string +* key_value +* add_entries +* rename_keys +* copy_values +* delete_entries + +### Sinks +* opensearch + +### + +### Data Prepper pipeline configuration + +```yaml +log-pipeline: + workers: 12 + delay: 50 + source: + http: + ssl: false + port: 2021 + thread_count: 4 + max_connection_count: 2000 + request_timeout: 10000 + buffer: + bounded_blocking: + buffer_size: 2000000 + batch_size: 5000 + processor: + - grok: + match: + log: [ "%{COMMONAPACHELOG}" ] + - date: + from_time_received: true + destination: "@timestamp" + - substitute_string: + entries: + - source: "log" + from: '\.' + to: "-" + - uppercase_string: + with_keys: + - "log" + - trim_string: + with_keys: + - "log" + - split_string: + entries: + - source: "request" + delimiter: "?" + - key_value: + source: "/request/1" + field_split_characters: "&" + value_split_characters: "=" + destination: "query_params" + - lowercase_string: + with_keys: + - "verb" + - add_entries: + entries: + - key: "entry1" + value: "entry1value" + - key: "entry2" + value: "entry2value" + - key: "entry3" + value: "entry3value" + - rename_keys: + entries: + - from_key: "entry1" + to_key: "renameEntry1" + - from_key: "entry2" + to_key: "renameEntry2" + - from_key: "entry3" + to_key: "renameEntry3" + - copy_values: + entries: + - from_key: "log" + to_key: "copy_key" + - delete_entries: + with_keys: ["renameEntry1", "renameEntry2", "renameEntry3"] + + sink: + - opensearch: + hosts: [ "myOpenSearchEndpoint" ] + index: "data_prepper" + username: "username" + password: "password" +``` + +## Logstash Configuration + +``` +input { + http { + ssl => false + port => 2021 + codec => "json" + threads => 4 + } +} + +filter { + grok { + match => {"log" => "%{COMMONAPACHELOG}"} + } + + mutate { + gsub => ["log", "\.", "-"] + } + + mutate { + uppercase => [ "log" ] + } + + mutate { + strip => [ "log" ] + } + + mutate { + split => { "request" => "?" } + } + + kv { + field_split => "&" + value_split => "=" + source => "[request][1]" + target => "query_params" + } + + mutate { + lowercase => [ "verb" ] + } + + mutate { + add_field => { + "entry1" => "entry1value" + "entry2" => "entry2value" + "entry3" => "entry3value" + } + } + + mutate { + rename => { + "entry1" => "renameEntry1" + "entry2" => "renameEntry2" + "entry3" => "renameEntry3" + } + } + + mutate { + copy => { + "log" => "copy_key" + } + } + + mutate { + remove_field => ["renameEntry1", "renameEntry2", "renameEntry3"] + } +} + +output { + opensearch { + hosts => ["myOpenSearchEndpoint"] + user => "user" + password => "password" + ssl => true + ssl_certificate_verification => false + index => "logstash" + } +} +``` + +The following changes were made to the `logstash.yml` file in order to replicate the Data Prepper configuration as much as possible + +```yaml +pipeline.workers: 12 +pipeline.batch.size: 5000 +``` + +## Results + +### Data Prepper + +Gatling reported the following results for the test that was run for Data Prepper. These results show that `118,104` requests were succesfully sent to Data Prepper. Throughput can be measured as +`118,104 * 200 (batch size) logs = 23,620,800 logs / 1,200 s = 19,684 logs/s`. The Gatling report also shows a distribution of latency on the side of the `http` source, with an average latency of `101 ms` + +![](../../docs/images/DataPrepperGatling.png) + + +### Logstash + +Gatling reported the following results for the test that was run for Data Prepper. These results show that `75,709` requests were succesfully sent to Data Prepper. Throughput can be measured as +`75,709 * 200 (batch size) logs = 15,141,800 logs / 1,200 s = 12,618 logs/s`. The Gatling report also shows a distribution of latency on the side of the `http` source, with an average latency of `158 ms` + +![](../../docs/images/LogstashGatling.png) + +When comparing these measurements side by side, the test shows that with this configuration, Data Prepper has a `56%` higher throughput than Logstash, and an average latency that is `56%` lower than Logstash. + +## Running tests + +If you wish to run performance tests on your own Data Prepper configuration, you can replicate the environment used. You can utilize the Gatling performance test suite in this repo on another EC2, and point Gatling to your running Data Prepper instance with the following command: + +``` +./gradlew --rerun-tasks :performance-test:gatlingRun-org.opensearch.dataprepper.test.performance.FixedClientSimulation -Dhost="" -DlogFile="/path/to/logFile" +``` +After all tests have completed HTML reports will be created in `data-prepper/performance-test/build/reports/gatling/-/index.html`. Further instructions on running performance tests and Gatling are available in the repository readme. \ No newline at end of file