From c6a1ae775277287673ecdd4a3b0e611dec2beacb Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Mon, 10 Nov 2025 00:16:52 +0100 Subject: [PATCH 01/20] Add test for SST progress monitoring variables (effyis#390) This test validates that SST progress variables are properly exposed in SHOW STATUS during State Snapshot Transfer when a node joins a cluster. The test focuses on verifying that all SST progress variables exist: - cluster__node_state (donor/joiner/synced) - cluster__sst_total (0-100 or dash when complete) - cluster__sst_stage (stage name or dash) - cluster__sst_stage_total (0-100 or dash) - cluster__sst_tables (count or dash) - cluster__sst_table (name or dash) Test creates a 2-node cluster with a simple table, triggers SST via JOIN CLUSTER, and verifies that all progress variables are present in SHOW STATUS output regardless of SST completion timing. Also adds watchdog = 0 to base searchd config with idempotent check. --- .../base/searchd-with-flexible-ports.conf | 1 + .../replication/test-sst-progress.rec | 159 ++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 test/clt-tests/replication/test-sst-progress.rec diff --git a/test/clt-tests/base/searchd-with-flexible-ports.conf b/test/clt-tests/base/searchd-with-flexible-ports.conf index 5fc6ba5a53..ecb8d1a3a4 100644 --- a/test/clt-tests/base/searchd-with-flexible-ports.conf +++ b/test/clt-tests/base/searchd-with-flexible-ports.conf @@ -15,6 +15,7 @@ searchd { query_log_format = sphinxql query_log_commands = 1 server_id = ${INSTANCE} + watchdog = 0 } EOF diff --git a/test/clt-tests/replication/test-sst-progress.rec b/test/clt-tests/replication/test-sst-progress.rec new file mode 100644 index 0000000000..ef8d234961 --- /dev/null +++ b/test/clt-tests/replication/test-sst-progress.rec @@ -0,0 +1,159 @@ +––– comment ––– +Test for SST (State Snapshot Transfer) progress monitoring during table replication +Issue: https://github.com/manticoresoftware/effyis/issues/390 + +Problem: When adding a large table to cluster via ALTER CLUSTER ADD, there was no way +to track replication progress. Users couldn't determine how much was copied or remaining. + +Solution: Added SST progress variables to SHOW STATUS: +- cluster__sst_total: Overall progress (0-100) +- cluster__sst_stage: Current stage (e.g., "send files") +- cluster__sst_stage_total: Progress of current stage (0-100) +- cluster__sst_tables: Total tables being transferred +- cluster__sst_table: Current table being transferred (e.g., "3 (products)") +- cluster__node_state: Node state (donor/joiner/synced) + +This test validates that SST progress variables exist in SHOW STATUS output. +––– input ––– +apt-get update -y > /dev/null; echo $? +––– output ––– +0 +––– input ––– +apt-get install -y iproute2 procps > /dev/null; echo $? +––– output ––– +0 +––– comment ––– +Add watchdog = 0 to base config if not already present +––– input ––– +grep -q "watchdog" test/clt-tests/base/searchd-with-flexible-ports.conf && echo "watchdog already exists" || sed -i '/^searchd {/,/^}/ s/^\([[:space:]]*\)}$/\1\twatchdog = 0\n\1}/' test/clt-tests/base/searchd-with-flexible-ports.conf; echo $? +––– output ––– +#!/watchdog already exists|0/!# +––– comment ––– +Start node 1 +––– input ––– +export INSTANCE=1 +––– output ––– +––– input ––– +mkdir -p /var/{run,lib,log}/manticore-${INSTANCE} +––– output ––– +––– input ––– +stdbuf -oL searchd --logreplication -c test/clt-tests/base/searchd-with-flexible-ports.conf > /dev/null +––– output ––– +––– input ––– +if timeout 10 grep -qm1 '\[BUDDY\] started' <(tail -n 1000 -f /var/log/manticore-${INSTANCE}/searchd.log); then echo 'Buddy started!'; else echo 'Timeout or failed!'; cat /var/log/manticore-${INSTANCE}/searchd.log; fi +––– output ––– +Buddy started! +––– comment ––– +Create cluster on node 1 +––– input ––– +mysql -h0 -P1306 -e "CREATE CLUSTER sst_test" +––– output ––– +––– input ––– +mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_status'\G" +––– output ––– +*************************** 1. row *************************** +Counter: cluster_sst_test_status + Value: primary +––– comment ––– +Create simple table and add to cluster +––– input ––– +mysql -h0 -P1306 -e "CREATE TABLE test_table (id bigint, title text)" +––– output ––– +––– input ––– +mysql -h0 -P1306 -e "ALTER CLUSTER sst_test ADD test_table" +––– output ––– +––– input ––– +mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_indexes'\G" +––– output ––– +*************************** 1. row *************************** +Counter: cluster_sst_test_indexes + Value: test_table +––– comment ––– +Start node 2 +––– input ––– +export INSTANCE=2 +––– output ––– +––– input ––– +mkdir -p /var/{run,lib,log}/manticore-${INSTANCE} +––– output ––– +––– input ––– +stdbuf -oL searchd --logreplication -c test/clt-tests/base/searchd-with-flexible-ports.conf > /dev/null +––– output ––– +––– input ––– +if timeout 10 grep -qm1 '\[BUDDY\] started' <(tail -n 1000 -f /var/log/manticore-${INSTANCE}/searchd.log); then echo 'Buddy started!'; else echo 'Timeout or failed!'; cat /var/log/manticore-${INSTANCE}/searchd.log; fi +––– output ––– +Buddy started! +––– comment ––– +Join node 2 to cluster - this triggers SST +––– input ––– +mysql -h0 -P2306 -e "JOIN CLUSTER sst_test AT '127.0.0.1:1312'" +––– output ––– +––– comment ––– +Verify SST progress variables exist on donor node +The main goal is to check that these variables are available, not their specific values +––– input ––– +mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_node_state'\G" +––– output ––– +*************************** 1. row *************************** +Counter: cluster_sst_test_node_state + Value: #!/.+/!# +––– comment ––– +Verify all 5 SST progress variables exist +––– input ––– +mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_%'\G" | grep "Counter:" | wc -l +––– output ––– +5 +––– comment ––– +Check that each individual SST variable exists +Values will be "-" if SST completed, or numbers/stage names if still active +––– input ––– +mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_total'\G" +––– output ––– +*************************** 1. row *************************** +Counter: cluster_sst_test_sst_total + Value: #!/.*/!# +––– input ––– +mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_stage'\G" +––– output ––– +*************************** 1. row *************************** +Counter: cluster_sst_test_sst_stage + Value: #!/.*/!# +––– input ––– +mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_stage_total'\G" +––– output ––– +*************************** 1. row *************************** +Counter: cluster_sst_test_sst_stage_total + Value: #!/.*/!# +––– input ––– +mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_tables'\G" +––– output ––– +*************************** 1. row *************************** +Counter: cluster_sst_test_sst_tables + Value: #!/.*/!# +––– input ––– +mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_table'\G" +––– output ––– +*************************** 1. row *************************** +Counter: cluster_sst_test_sst_table + Value: #!/.*/!# +––– comment ––– +Verify both nodes are synced +––– input ––– +bash -c 'end=$((SECONDS+60)); while [ $SECONDS -lt $end ]; do all_synced=true; for port in 1306 2306; do mysql -h0 -P$port -e "SHOW STATUS LIKE '\''cluster_sst_test_status'\''\G" > /tmp/status_$port.log 2>/dev/null && grep -q "Value: primary" /tmp/status_$port.log || { all_synced=false; break; }; done; if $all_synced; then for port in 1306 2306; do echo "Port $port: Node synced"; done; exit 0; fi; sleep 1; done; echo "Timeout waiting for nodes to sync!"; exit 1' +––– output ––– +Port 1306: Node synced +Port 2306: Node synced +––– comment ––– +Verify table exists on both nodes +––– input ––– +mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_indexes'\G" +––– output ––– +*************************** 1. row *************************** +Counter: cluster_sst_test_indexes + Value: test_table +––– input ––– +mysql -h0 -P2306 -e "SHOW STATUS LIKE 'cluster_sst_test_indexes'\G" +––– output ––– +*************************** 1. row *************************** +Counter: cluster_sst_test_indexes + Value: test_table From 200cd843b7c8469555d2ea18d77b72f3da809ddf Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Mon, 10 Nov 2025 01:52:24 +0100 Subject: [PATCH 02/20] Fix watchdog cleanup and output formatting in SST progress test - Fix output regex: now matches 'watchdog already exists' or 'watchdog added' - Add cleanup step to remove watchdog from base config after test - Prevents affecting other tests that run after this one --- test/clt-tests/replication/test-sst-progress.rec | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/clt-tests/replication/test-sst-progress.rec b/test/clt-tests/replication/test-sst-progress.rec index ef8d234961..750e0b6f33 100644 --- a/test/clt-tests/replication/test-sst-progress.rec +++ b/test/clt-tests/replication/test-sst-progress.rec @@ -25,9 +25,9 @@ apt-get install -y iproute2 procps > /dev/null; echo $? ––– comment ––– Add watchdog = 0 to base config if not already present ––– input ––– -grep -q "watchdog" test/clt-tests/base/searchd-with-flexible-ports.conf && echo "watchdog already exists" || sed -i '/^searchd {/,/^}/ s/^\([[:space:]]*\)}$/\1\twatchdog = 0\n\1}/' test/clt-tests/base/searchd-with-flexible-ports.conf; echo $? +grep -q "watchdog" test/clt-tests/base/searchd-with-flexible-ports.conf && echo "watchdog already exists" || { sed -i '/^searchd {/,/^}/ s/^\([[:space:]]*\)}$/\1\twatchdog = 0\n\1}/' test/clt-tests/base/searchd-with-flexible-ports.conf && echo "watchdog added"; } ––– output ––– -#!/watchdog already exists|0/!# +#!/watchdog already exists|watchdog added/!# ––– comment ––– Start node 1 ––– input ––– @@ -157,3 +157,9 @@ mysql -h0 -P2306 -e "SHOW STATUS LIKE 'cluster_sst_test_indexes'\G" *************************** 1. row *************************** Counter: cluster_sst_test_indexes Value: test_table +––– comment ––– +Cleanup: Remove watchdog from base config to avoid affecting other tests +––– input ––– +sed -i '/watchdog = 0/d' test/clt-tests/base/searchd-with-flexible-ports.conf; echo $? +––– output ––– +0 From 6f4dbbe403aa88ce46c72507d0a8fdc641b739a4 Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Mon, 10 Nov 2025 02:01:53 +0100 Subject: [PATCH 03/20] test: add Logstash 9.2 version support - Add 9.2 to TESTED_VERSIONS list - Update LATEST_TESTED_VERSION to 9.2 - Update expected test output for new version check Logstash 9.2 will use the existing >= 9.1 configuration which includes 'mode => read' for file input. Closes #3866 --- .../test-integrations-check-logstash-versions.rec | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec index 6ea7013d74..7d08936680 100644 --- a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec +++ b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec @@ -34,10 +34,11 @@ TESTED_VERSIONS="7.17 8.18 8.19 9.0 -9.1" +9.1 +9.2" # Check for NEW versions (after latest tested) -LATEST_TESTED_VERSION="9.1" +LATEST_TESTED_VERSION="9.2" NEW_VERSIONS=$(curl -s "https://hub.docker.com/v2/repositories/library/logstash/tags/?page_size=100" \ | jq -r ".results[].name" \ | grep "^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$" \ @@ -67,6 +68,4 @@ echo "Using tested versions:" echo "$TESTED_VERSIONS" SCRIPT ––– output ––– -🆕 NEW Logstash versions detected: -9.2 -❌ Need to test new versions and update the list! +✅ No new versions found after 9.2 From aaea1aad45d456df89f2702062dbe29369ac10a2 Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Mon, 10 Nov 2025 02:09:33 +0100 Subject: [PATCH 04/20] test: add Logstash 9.2 version support --- ...t-integrations-check-logstash-versions.rec | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec index 6ea7013d74..f6901ed917 100644 --- a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec +++ b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec @@ -34,10 +34,11 @@ TESTED_VERSIONS="7.17 8.18 8.19 9.0 -9.1" +9.1 +9.2" # Check for NEW versions (after latest tested) -LATEST_TESTED_VERSION="9.1" +LATEST_TESTED_VERSION="9.2" NEW_VERSIONS=$(curl -s "https://hub.docker.com/v2/repositories/library/logstash/tags/?page_size=100" \ | jq -r ".results[].name" \ | grep "^[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*$" \ @@ -67,6 +68,29 @@ echo "Using tested versions:" echo "$TESTED_VERSIONS" SCRIPT ––– output ––– -🆕 NEW Logstash versions detected: +✅ No new versions found after 9.2 +Using tested versions: +7.17 +8.0 +8.1 +8.2 +8.3 +8.4 +8.5 +8.6 +8.7 +8.8 +8.9 +8.10 +8.11 +8.12 +8.13 +8.14 +8.15 +8.16 +8.17 +8.18 +8.19 +9.0 +9.1 9.2 -❌ Need to test new versions and update the list! From 4dc64bc37b37f5da36e2b88040090599f5d138b0 Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Mon, 10 Nov 2025 23:56:29 +0100 Subject: [PATCH 05/20] Add Logstash 9.2 support to integration tests - Fixed superuser handling for Logstash 9.2+: use logstash.yml with allow_superuser setting instead of patching runner.rb - Updated version detection logic to apply correct configuration per version - Version 9.0-9.1: use runner.rb patch with ALLOW_SUPERUSER=1 - Version 9.2+: use logstash.yml with allow_superuser: true and --path.settings flag - Configuration logic remains unchanged: version 9.0+ uses host metadata, 9.1 uses simple add_field - Added test section for Logstash 9.2.0 - Updated version check file with 9.2 as LATEST_TESTED_VERSION --- ...st-integrations-test-logstash-versions.rec | 382 ++---------------- 1 file changed, 26 insertions(+), 356 deletions(-) diff --git a/test/clt-tests/integrations/logstash/test-integrations-test-logstash-versions.rec b/test/clt-tests/integrations/logstash/test-integrations-test-logstash-versions.rec index 493404f823..525118296d 100644 --- a/test/clt-tests/integrations/logstash/test-integrations-test-logstash-versions.rec +++ b/test/clt-tests/integrations/logstash/test-integrations-test-logstash-versions.rec @@ -82,12 +82,21 @@ if [ "$version_major" -ge 8 ]; then ilm_settings="ilm_enabled => false manage_template => false" fi -if [ "$version_major" -ge 9 ]; then +if [ "$version_major" -eq 9 ] && [ "$version_minor" -lt 2 ]; then export ALLOW_SUPERUSER=1 sed -i '259s/^/# /' /usr/share/logstash/logstash-${VERSION}.0/logstash-core/lib/logstash/runner.rb 2>/dev/null || true fi +if [ "$version_major" -gt 9 ] || ([ "$version_major" -eq 9 ] && [ "$version_minor" -ge 2 ]); then + mkdir -p /etc/logstash + cat > /etc/logstash/logstash.yml << LSYML +allow_superuser: true +LSYML + logstash_settings_args="--path.settings=/etc/logstash" +else + logstash_settings_args="" +fi CONFIG_FILE="/tmp/logstash_config_${VERSION}.conf" -if [ "$version_major" -gt 9 ] || ([ "$version_major" -eq 9 ] && [ "$version_minor" -ge 1 ]); then +if [ "$version_major" -eq 9 ] && [ "$version_minor" -eq 1 ]; then cat > "$CONFIG_FILE" << CONF input { file { @@ -186,6 +195,7 @@ timeout $wait_time logstash --path.data="$TEMP_DATA_DIR" \ --log.level=error \ --pipeline.batch.size $batch_size \ $ecs_args \ + $logstash_settings_args \ > /dev/null 2>&1 || true sleep 10 echo "✓ Logstash $VERSION started and processed logs" @@ -221,360 +231,6 @@ chmod +x /tmp/logstash-single-test.sh; echo $? ––– output ––– 0 ––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-7.17.0-linux-x86_64.tar.gz" -O logstash-7.17.0.tar.gz && gzip -t logstash-7.17.0.tar.gz 2>/dev/null && tar -tzf logstash-7.17.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 7.17.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 7.17.0 after 3 attempts" >&2 || rm -f logstash-7.17.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 7.17.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 7.17 -––– output ––– ->>> Testing Logstash version: 7.17 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 7.17 started and processed logs -✓ Row count check for 7.17: 5 rows -✓ Structure check for 7.17: passed -✓ Logstash version 7.17 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-7.17.0 logstash-7.17.0.tar.gz /tmp/logstash_test_7.17 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.0.0-linux-x86_64.tar.gz" -O logstash-8.0.0.tar.gz && gzip -t logstash-8.0.0.tar.gz 2>/dev/null && tar -tzf logstash-8.0.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.0.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.0.0 after 3 attempts" >&2 || rm -f logstash-8.0.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.0.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.0 -––– output ––– ->>> Testing Logstash version: 8.0 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.0 started and processed logs -✓ Row count check for 8.0: 5 rows -✓ Structure check for 8.0: passed -✓ Logstash version 8.0 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.0.0 logstash-8.0.0.tar.gz /tmp/logstash_test_8.0 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.1.0-linux-x86_64.tar.gz" -O logstash-8.1.0.tar.gz && gzip -t logstash-8.1.0.tar.gz 2>/dev/null && tar -tzf logstash-8.1.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.1.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.1.0 after 3 attempts" >&2 || rm -f logstash-8.1.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.1.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.1 -––– output ––– ->>> Testing Logstash version: 8.1 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.1 started and processed logs -✓ Row count check for 8.1: 5 rows -✓ Structure check for 8.1: passed -✓ Logstash version 8.1 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.1.0 logstash-8.1.0.tar.gz /tmp/logstash_test_8.1 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.2.0-linux-x86_64.tar.gz" -O logstash-8.2.0.tar.gz && gzip -t logstash-8.2.0.tar.gz 2>/dev/null && tar -tzf logstash-8.2.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.2.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.2.0 after 3 attempts" >&2 || rm -f logstash-8.2.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.2.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.2 -––– output ––– ->>> Testing Logstash version: 8.2 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.2 started and processed logs -✓ Row count check for 8.2: 5 rows -✓ Structure check for 8.2: passed -✓ Logstash version 8.2 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.2.0 logstash-8.2.0.tar.gz /tmp/logstash_test_8.2 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.3.0-linux-x86_64.tar.gz" -O logstash-8.3.0.tar.gz && gzip -t logstash-8.3.0.tar.gz 2>/dev/null && tar -tzf logstash-8.3.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.3.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.3.0 after 3 attempts" >&2 || rm -f logstash-8.3.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.3.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.3 -––– output ––– ->>> Testing Logstash version: 8.3 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.3 started and processed logs -✓ Row count check for 8.3: 5 rows -✓ Structure check for 8.3: passed -✓ Logstash version 8.3 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.3.0 logstash-8.3.0.tar.gz /tmp/logstash_test_8.3 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.4.0-linux-x86_64.tar.gz" -O logstash-8.4.0.tar.gz && gzip -t logstash-8.4.0.tar.gz 2>/dev/null && tar -tzf logstash-8.4.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.4.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.4.0 after 3 attempts" >&2 || rm -f logstash-8.4.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.4.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.4 -––– output ––– ->>> Testing Logstash version: 8.4 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.4 started and processed logs -✓ Row count check for 8.4: 5 rows -✓ Structure check for 8.4: passed -✓ Logstash version 8.4 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.4.0 logstash-8.4.0.tar.gz /tmp/logstash_test_8.4 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.5.0-linux-x86_64.tar.gz" -O logstash-8.5.0.tar.gz && gzip -t logstash-8.5.0.tar.gz 2>/dev/null && tar -tzf logstash-8.5.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.5.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.5.0 after 3 attempts" >&2 || rm -f logstash-8.5.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.5.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.5 -––– output ––– ->>> Testing Logstash version: 8.5 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.5 started and processed logs -✓ Row count check for 8.5: 5 rows -✓ Structure check for 8.5: passed -✓ Logstash version 8.5 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.5.0 logstash-8.5.0.tar.gz /tmp/logstash_test_8.5 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.6.0-linux-x86_64.tar.gz" -O logstash-8.6.0.tar.gz && gzip -t logstash-8.6.0.tar.gz 2>/dev/null && tar -tzf logstash-8.6.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.6.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.6.0 after 3 attempts" >&2 || rm -f logstash-8.6.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.6.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.6 -––– output ––– ->>> Testing Logstash version: 8.6 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.6 started and processed logs -✓ Row count check for 8.6: 5 rows -✓ Structure check for 8.6: passed -✓ Logstash version 8.6 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.6.0 logstash-8.6.0.tar.gz /tmp/logstash_test_8.6 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.7.0-linux-x86_64.tar.gz" -O logstash-8.7.0.tar.gz && gzip -t logstash-8.7.0.tar.gz 2>/dev/null && tar -tzf logstash-8.7.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.7.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.7.0 after 3 attempts" >&2 || rm -f logstash-8.7.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.7.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.7 -––– output ––– ->>> Testing Logstash version: 8.7 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.7 started and processed logs -✓ Row count check for 8.7: 5 rows -✓ Structure check for 8.7: passed -✓ Logstash version 8.7 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.7.0 logstash-8.7.0.tar.gz /tmp/logstash_test_8.7 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.8.0-linux-x86_64.tar.gz" -O logstash-8.8.0.tar.gz && gzip -t logstash-8.8.0.tar.gz 2>/dev/null && tar -tzf logstash-8.8.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.8.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.8.0 after 3 attempts" >&2 || rm -f logstash-8.8.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.8.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.8 -––– output ––– ->>> Testing Logstash version: 8.8 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.8 started and processed logs -✓ Row count check for 8.8: 5 rows -✓ Structure check for 8.8: passed -✓ Logstash version 8.8 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.8.0 logstash-8.8.0.tar.gz /tmp/logstash_test_8.8 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.9.0-linux-x86_64.tar.gz" -O logstash-8.9.0.tar.gz && gzip -t logstash-8.9.0.tar.gz 2>/dev/null && tar -tzf logstash-8.9.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.9.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.9.0 after 3 attempts" >&2 || rm -f logstash-8.9.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.9.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.9 -––– output ––– ->>> Testing Logstash version: 8.9 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.9 started and processed logs -✓ Row count check for 8.9: 5 rows -✓ Structure check for 8.9: passed -✓ Logstash version 8.9 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.9.0 logstash-8.9.0.tar.gz /tmp/logstash_test_8.9 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.10.0-linux-x86_64.tar.gz" -O logstash-8.10.0.tar.gz && gzip -t logstash-8.10.0.tar.gz 2>/dev/null && tar -tzf logstash-8.10.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.10.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.10.0 after 3 attempts" >&2 || rm -f logstash-8.10.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.10.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.10 -––– output ––– ->>> Testing Logstash version: 8.10 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.10 started and processed logs -✓ Row count check for 8.10: 5 rows -✓ Structure check for 8.10: passed -✓ Logstash version 8.10 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.10.0 logstash-8.10.0.tar.gz /tmp/logstash_test_8.10 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.11.0-linux-x86_64.tar.gz" -O logstash-8.11.0.tar.gz && gzip -t logstash-8.11.0.tar.gz 2>/dev/null && tar -tzf logstash-8.11.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.11.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.11.0 after 3 attempts" >&2 || rm -f logstash-8.11.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.11.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.11 -––– output ––– ->>> Testing Logstash version: 8.11 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.11 started and processed logs -✓ Row count check for 8.11: 5 rows -✓ Structure check for 8.11: passed -✓ Logstash version 8.11 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.11.0 logstash-8.11.0.tar.gz /tmp/logstash_test_8.11 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.12.0-linux-x86_64.tar.gz" -O logstash-8.12.0.tar.gz && gzip -t logstash-8.12.0.tar.gz 2>/dev/null && tar -tzf logstash-8.12.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.12.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.12.0 after 3 attempts" >&2 || rm -f logstash-8.12.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.12.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.12 -––– output ––– ->>> Testing Logstash version: 8.12 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.12 started and processed logs -✓ Row count check for 8.12: 5 rows -✓ Structure check for 8.12: passed -✓ Logstash version 8.12 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.12.0 logstash-8.12.0.tar.gz /tmp/logstash_test_8.12 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.13.0-linux-x86_64.tar.gz" -O logstash-8.13.0.tar.gz && gzip -t logstash-8.13.0.tar.gz 2>/dev/null && tar -tzf logstash-8.13.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.13.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.13.0 after 3 attempts" >&2 || rm -f logstash-8.13.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.13.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.13 -––– output ––– ->>> Testing Logstash version: 8.13 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.13 started and processed logs -✓ Row count check for 8.13: 5 rows -✓ Structure check for 8.13: passed -✓ Logstash version 8.13 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.13.0 logstash-8.13.0.tar.gz /tmp/logstash_test_8.13 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.14.0-linux-x86_64.tar.gz" -O logstash-8.14.0.tar.gz && gzip -t logstash-8.14.0.tar.gz 2>/dev/null && tar -tzf logstash-8.14.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.14.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.14.0 after 3 attempts" >&2 || rm -f logstash-8.14.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.14.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.14 -––– output ––– ->>> Testing Logstash version: 8.14 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.14 started and processed logs -✓ Row count check for 8.14: 5 rows -✓ Structure check for 8.14: passed -✓ Logstash version 8.14 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.14.0 logstash-8.14.0.tar.gz /tmp/logstash_test_8.14 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.15.0-linux-x86_64.tar.gz" -O logstash-8.15.0.tar.gz && gzip -t logstash-8.15.0.tar.gz 2>/dev/null && tar -tzf logstash-8.15.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.15.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.15.0 after 3 attempts" >&2 || rm -f logstash-8.15.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.15.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.15 -––– output ––– ->>> Testing Logstash version: 8.15 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.15 started and processed logs -✓ Row count check for 8.15: 5 rows -✓ Structure check for 8.15: passed -✓ Logstash version 8.15 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.15.0 logstash-8.15.0.tar.gz /tmp/logstash_test_8.15 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.16.0-linux-x86_64.tar.gz" -O logstash-8.16.0.tar.gz && gzip -t logstash-8.16.0.tar.gz 2>/dev/null && tar -tzf logstash-8.16.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.16.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.16.0 after 3 attempts" >&2 || rm -f logstash-8.16.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.16.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.16 -––– output ––– ->>> Testing Logstash version: 8.16 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.16 started and processed logs -✓ Row count check for 8.16: 5 rows -✓ Structure check for 8.16: passed -✓ Logstash version 8.16 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.16.0 logstash-8.16.0.tar.gz /tmp/logstash_test_8.16 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.17.0-linux-x86_64.tar.gz" -O logstash-8.17.0.tar.gz && gzip -t logstash-8.17.0.tar.gz 2>/dev/null && tar -tzf logstash-8.17.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.17.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.17.0 after 3 attempts" >&2 || rm -f logstash-8.17.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.17.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.17 -––– output ––– ->>> Testing Logstash version: 8.17 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.17 started and processed logs -✓ Row count check for 8.17: 5 rows -✓ Structure check for 8.17: passed -✓ Logstash version 8.17 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.17.0 logstash-8.17.0.tar.gz /tmp/logstash_test_8.17 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.18.0-linux-x86_64.tar.gz" -O logstash-8.18.0.tar.gz && gzip -t logstash-8.18.0.tar.gz 2>/dev/null && tar -tzf logstash-8.18.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.18.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.18.0 after 3 attempts" >&2 || rm -f logstash-8.18.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.18.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.18 -––– output ––– ->>> Testing Logstash version: 8.18 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.18 started and processed logs -✓ Row count check for 8.18: 5 rows -✓ Structure check for 8.18: passed -✓ Logstash version 8.18 tested successfully -––– input ––– -rm -rf /usr/share/logstash/logstash-8.18.0 logstash-8.18.0.tar.gz /tmp/logstash_test_8.18 -––– output ––– -––– input ––– -for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.19.0-linux-x86_64.tar.gz" -O logstash-8.19.0.tar.gz && gzip -t logstash-8.19.0.tar.gz 2>/dev/null && tar -tzf logstash-8.19.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.19.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.19.0 after 3 attempts" >&2 || rm -f logstash-8.19.0.tar.gz >/dev/null 2>&1; sleep 2; }; done -––– output ––– -✓ Logstash 8.19.0 downloaded successfully -––– input ––– -timeout 300 bash /tmp/logstash-single-test.sh 8.19 -––– output ––– ->>> Testing Logstash version: 8.19 -✓ Log file has 5 lines -✓ Manticore Search available -✓ Logstash 8.19 started and processed logs -✓ Row count check for 8.19: 5 rows -✓ Structure check for 8.19: passed -✓ Logstash version 8.19 tested successfully -––– input ––– for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-9.0.0-linux-x86_64.tar.gz" -O logstash-9.0.0.tar.gz && gzip -t logstash-9.0.0.tar.gz 2>/dev/null && tar -tzf logstash-9.0.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 9.0.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 9.0.0 after 3 attempts" >&2 || rm -f logstash-9.0.0.tar.gz >/dev/null 2>&1; sleep 2; }; done ––– output ––– ✓ Logstash 9.0.0 downloaded successfully @@ -603,5 +259,19 @@ timeout 300 bash /tmp/logstash-single-test.sh 9.1 ✓ Structure check for 9.1: passed ✓ Logstash version 9.1 tested successfully ––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-9.2.0-linux-x86_64.tar.gz" -O logstash-9.2.0.tar.gz && gzip -t logstash-9.2.0.tar.gz 2>/dev/null && tar -tzf logstash-9.2.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 9.2.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 9.2.0 after 3 attempts" >&2 || rm -f logstash-9.2.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 9.2.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 9.2 +––– output ––– +>>> Testing Logstash version: 9.2 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 9.2 started and processed logs +✓ Row count check for 9.2: 5 rows +✓ Structure check for 9.2: passed +✓ Logstash version 9.2 tested successfully +––– input ––– rm -f logstash-*.tar.gz ––– output ––– From a30704099e1a5548dcde2f865b507ecb6effe764 Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Tue, 11 Nov 2025 00:16:38 +0100 Subject: [PATCH 06/20] Update test-integrations-test-logstash-versions.rec --- ...st-integrations-test-logstash-versions.rec | 354 ++++++++++++++++++ 1 file changed, 354 insertions(+) diff --git a/test/clt-tests/integrations/logstash/test-integrations-test-logstash-versions.rec b/test/clt-tests/integrations/logstash/test-integrations-test-logstash-versions.rec index 525118296d..c99b0105d2 100644 --- a/test/clt-tests/integrations/logstash/test-integrations-test-logstash-versions.rec +++ b/test/clt-tests/integrations/logstash/test-integrations-test-logstash-versions.rec @@ -231,6 +231,360 @@ chmod +x /tmp/logstash-single-test.sh; echo $? ––– output ––– 0 ––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-7.17.0-linux-x86_64.tar.gz" -O logstash-7.17.0.tar.gz && gzip -t logstash-7.17.0.tar.gz 2>/dev/null && tar -tzf logstash-7.17.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 7.17.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 7.17.0 after 3 attempts" >&2 || rm -f logstash-7.17.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 7.17.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 7.17 +––– output ––– +>>> Testing Logstash version: 7.17 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 7.17 started and processed logs +✓ Row count check for 7.17: 5 rows +✓ Structure check for 7.17: passed +✓ Logstash version 7.17 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-7.17.0 logstash-7.17.0.tar.gz /tmp/logstash_test_7.17 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.0.0-linux-x86_64.tar.gz" -O logstash-8.0.0.tar.gz && gzip -t logstash-8.0.0.tar.gz 2>/dev/null && tar -tzf logstash-8.0.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.0.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.0.0 after 3 attempts" >&2 || rm -f logstash-8.0.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.0.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.0 +––– output ––– +>>> Testing Logstash version: 8.0 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.0 started and processed logs +✓ Row count check for 8.0: 5 rows +✓ Structure check for 8.0: passed +✓ Logstash version 8.0 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.0.0 logstash-8.0.0.tar.gz /tmp/logstash_test_8.0 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.1.0-linux-x86_64.tar.gz" -O logstash-8.1.0.tar.gz && gzip -t logstash-8.1.0.tar.gz 2>/dev/null && tar -tzf logstash-8.1.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.1.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.1.0 after 3 attempts" >&2 || rm -f logstash-8.1.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.1.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.1 +––– output ––– +>>> Testing Logstash version: 8.1 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.1 started and processed logs +✓ Row count check for 8.1: 5 rows +✓ Structure check for 8.1: passed +✓ Logstash version 8.1 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.1.0 logstash-8.1.0.tar.gz /tmp/logstash_test_8.1 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.2.0-linux-x86_64.tar.gz" -O logstash-8.2.0.tar.gz && gzip -t logstash-8.2.0.tar.gz 2>/dev/null && tar -tzf logstash-8.2.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.2.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.2.0 after 3 attempts" >&2 || rm -f logstash-8.2.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.2.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.2 +––– output ––– +>>> Testing Logstash version: 8.2 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.2 started and processed logs +✓ Row count check for 8.2: 5 rows +✓ Structure check for 8.2: passed +✓ Logstash version 8.2 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.2.0 logstash-8.2.0.tar.gz /tmp/logstash_test_8.2 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.3.0-linux-x86_64.tar.gz" -O logstash-8.3.0.tar.gz && gzip -t logstash-8.3.0.tar.gz 2>/dev/null && tar -tzf logstash-8.3.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.3.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.3.0 after 3 attempts" >&2 || rm -f logstash-8.3.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.3.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.3 +––– output ––– +>>> Testing Logstash version: 8.3 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.3 started and processed logs +✓ Row count check for 8.3: 5 rows +✓ Structure check for 8.3: passed +✓ Logstash version 8.3 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.3.0 logstash-8.3.0.tar.gz /tmp/logstash_test_8.3 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.4.0-linux-x86_64.tar.gz" -O logstash-8.4.0.tar.gz && gzip -t logstash-8.4.0.tar.gz 2>/dev/null && tar -tzf logstash-8.4.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.4.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.4.0 after 3 attempts" >&2 || rm -f logstash-8.4.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.4.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.4 +––– output ––– +>>> Testing Logstash version: 8.4 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.4 started and processed logs +✓ Row count check for 8.4: 5 rows +✓ Structure check for 8.4: passed +✓ Logstash version 8.4 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.4.0 logstash-8.4.0.tar.gz /tmp/logstash_test_8.4 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.5.0-linux-x86_64.tar.gz" -O logstash-8.5.0.tar.gz && gzip -t logstash-8.5.0.tar.gz 2>/dev/null && tar -tzf logstash-8.5.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.5.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.5.0 after 3 attempts" >&2 || rm -f logstash-8.5.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.5.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.5 +––– output ––– +>>> Testing Logstash version: 8.5 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.5 started and processed logs +✓ Row count check for 8.5: 5 rows +✓ Structure check for 8.5: passed +✓ Logstash version 8.5 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.5.0 logstash-8.5.0.tar.gz /tmp/logstash_test_8.5 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.6.0-linux-x86_64.tar.gz" -O logstash-8.6.0.tar.gz && gzip -t logstash-8.6.0.tar.gz 2>/dev/null && tar -tzf logstash-8.6.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.6.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.6.0 after 3 attempts" >&2 || rm -f logstash-8.6.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.6.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.6 +––– output ––– +>>> Testing Logstash version: 8.6 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.6 started and processed logs +✓ Row count check for 8.6: 5 rows +✓ Structure check for 8.6: passed +✓ Logstash version 8.6 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.6.0 logstash-8.6.0.tar.gz /tmp/logstash_test_8.6 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.7.0-linux-x86_64.tar.gz" -O logstash-8.7.0.tar.gz && gzip -t logstash-8.7.0.tar.gz 2>/dev/null && tar -tzf logstash-8.7.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.7.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.7.0 after 3 attempts" >&2 || rm -f logstash-8.7.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.7.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.7 +––– output ––– +>>> Testing Logstash version: 8.7 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.7 started and processed logs +✓ Row count check for 8.7: 5 rows +✓ Structure check for 8.7: passed +✓ Logstash version 8.7 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.7.0 logstash-8.7.0.tar.gz /tmp/logstash_test_8.7 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.8.0-linux-x86_64.tar.gz" -O logstash-8.8.0.tar.gz && gzip -t logstash-8.8.0.tar.gz 2>/dev/null && tar -tzf logstash-8.8.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.8.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.8.0 after 3 attempts" >&2 || rm -f logstash-8.8.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.8.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.8 +––– output ––– +>>> Testing Logstash version: 8.8 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.8 started and processed logs +✓ Row count check for 8.8: 5 rows +✓ Structure check for 8.8: passed +✓ Logstash version 8.8 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.8.0 logstash-8.8.0.tar.gz /tmp/logstash_test_8.8 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.9.0-linux-x86_64.tar.gz" -O logstash-8.9.0.tar.gz && gzip -t logstash-8.9.0.tar.gz 2>/dev/null && tar -tzf logstash-8.9.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.9.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.9.0 after 3 attempts" >&2 || rm -f logstash-8.9.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.9.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.9 +––– output ––– +>>> Testing Logstash version: 8.9 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.9 started and processed logs +✓ Row count check for 8.9: 5 rows +✓ Structure check for 8.9: passed +✓ Logstash version 8.9 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.9.0 logstash-8.9.0.tar.gz /tmp/logstash_test_8.9 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.10.0-linux-x86_64.tar.gz" -O logstash-8.10.0.tar.gz && gzip -t logstash-8.10.0.tar.gz 2>/dev/null && tar -tzf logstash-8.10.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.10.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.10.0 after 3 attempts" >&2 || rm -f logstash-8.10.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.10.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.10 +––– output ––– +>>> Testing Logstash version: 8.10 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.10 started and processed logs +✓ Row count check for 8.10: 5 rows +✓ Structure check for 8.10: passed +✓ Logstash version 8.10 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.10.0 logstash-8.10.0.tar.gz /tmp/logstash_test_8.10 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.11.0-linux-x86_64.tar.gz" -O logstash-8.11.0.tar.gz && gzip -t logstash-8.11.0.tar.gz 2>/dev/null && tar -tzf logstash-8.11.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.11.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.11.0 after 3 attempts" >&2 || rm -f logstash-8.11.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.11.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.11 +––– output ––– +>>> Testing Logstash version: 8.11 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.11 started and processed logs +✓ Row count check for 8.11: 5 rows +✓ Structure check for 8.11: passed +✓ Logstash version 8.11 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.11.0 logstash-8.11.0.tar.gz /tmp/logstash_test_8.11 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.12.0-linux-x86_64.tar.gz" -O logstash-8.12.0.tar.gz && gzip -t logstash-8.12.0.tar.gz 2>/dev/null && tar -tzf logstash-8.12.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.12.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.12.0 after 3 attempts" >&2 || rm -f logstash-8.12.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.12.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.12 +––– output ––– +>>> Testing Logstash version: 8.12 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.12 started and processed logs +✓ Row count check for 8.12: 5 rows +✓ Structure check for 8.12: passed +✓ Logstash version 8.12 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.12.0 logstash-8.12.0.tar.gz /tmp/logstash_test_8.12 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.13.0-linux-x86_64.tar.gz" -O logstash-8.13.0.tar.gz && gzip -t logstash-8.13.0.tar.gz 2>/dev/null && tar -tzf logstash-8.13.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.13.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.13.0 after 3 attempts" >&2 || rm -f logstash-8.13.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.13.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.13 +––– output ––– +>>> Testing Logstash version: 8.13 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.13 started and processed logs +✓ Row count check for 8.13: 5 rows +✓ Structure check for 8.13: passed +✓ Logstash version 8.13 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.13.0 logstash-8.13.0.tar.gz /tmp/logstash_test_8.13 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.14.0-linux-x86_64.tar.gz" -O logstash-8.14.0.tar.gz && gzip -t logstash-8.14.0.tar.gz 2>/dev/null && tar -tzf logstash-8.14.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.14.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.14.0 after 3 attempts" >&2 || rm -f logstash-8.14.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.14.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.14 +––– output ––– +>>> Testing Logstash version: 8.14 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.14 started and processed logs +✓ Row count check for 8.14: 5 rows +✓ Structure check for 8.14: passed +✓ Logstash version 8.14 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.14.0 logstash-8.14.0.tar.gz /tmp/logstash_test_8.14 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.15.0-linux-x86_64.tar.gz" -O logstash-8.15.0.tar.gz && gzip -t logstash-8.15.0.tar.gz 2>/dev/null && tar -tzf logstash-8.15.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.15.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.15.0 after 3 attempts" >&2 || rm -f logstash-8.15.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.15.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.15 +––– output ––– +>>> Testing Logstash version: 8.15 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.15 started and processed logs +✓ Row count check for 8.15: 5 rows +✓ Structure check for 8.15: passed +✓ Logstash version 8.15 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.15.0 logstash-8.15.0.tar.gz /tmp/logstash_test_8.15 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.16.0-linux-x86_64.tar.gz" -O logstash-8.16.0.tar.gz && gzip -t logstash-8.16.0.tar.gz 2>/dev/null && tar -tzf logstash-8.16.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.16.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.16.0 after 3 attempts" >&2 || rm -f logstash-8.16.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.16.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.16 +––– output ––– +>>> Testing Logstash version: 8.16 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.16 started and processed logs +✓ Row count check for 8.16: 5 rows +✓ Structure check for 8.16: passed +✓ Logstash version 8.16 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.16.0 logstash-8.16.0.tar.gz /tmp/logstash_test_8.16 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.17.0-linux-x86_64.tar.gz" -O logstash-8.17.0.tar.gz && gzip -t logstash-8.17.0.tar.gz 2>/dev/null && tar -tzf logstash-8.17.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.17.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.17.0 after 3 attempts" >&2 || rm -f logstash-8.17.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.17.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.17 +––– output ––– +>>> Testing Logstash version: 8.17 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.17 started and processed logs +✓ Row count check for 8.17: 5 rows +✓ Structure check for 8.17: passed +✓ Logstash version 8.17 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.17.0 logstash-8.17.0.tar.gz /tmp/logstash_test_8.17 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.18.0-linux-x86_64.tar.gz" -O logstash-8.18.0.tar.gz && gzip -t logstash-8.18.0.tar.gz 2>/dev/null && tar -tzf logstash-8.18.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.18.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.18.0 after 3 attempts" >&2 || rm -f logstash-8.18.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.18.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.18 +––– output ––– +>>> Testing Logstash version: 8.18 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.18 started and processed logs +✓ Row count check for 8.18: 5 rows +✓ Structure check for 8.18: passed +✓ Logstash version 8.18 tested successfully +––– input ––– +rm -rf /usr/share/logstash/logstash-8.18.0 logstash-8.18.0.tar.gz /tmp/logstash_test_8.18 +––– output ––– +––– input ––– +for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-8.19.0-linux-x86_64.tar.gz" -O logstash-8.19.0.tar.gz && gzip -t logstash-8.19.0.tar.gz 2>/dev/null && tar -tzf logstash-8.19.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 8.19.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 8.19.0 after 3 attempts" >&2 || rm -f logstash-8.19.0.tar.gz >/dev/null 2>&1; sleep 2; }; done +––– output ––– +✓ Logstash 8.19.0 downloaded successfully +––– input ––– +timeout 300 bash /tmp/logstash-single-test.sh 8.19 +––– output ––– +>>> Testing Logstash version: 8.19 +✓ Log file has 5 lines +✓ Manticore Search available +✓ Logstash 8.19 started and processed logs +✓ Row count check for 8.19: 5 rows +✓ Structure check for 8.19: passed +✓ Logstash version 8.19 tested successfully +––– input ––– for i in {1..3}; do wget -q --timeout=60 --tries=1 "https://artifacts.elastic.co/downloads/logstash/logstash-9.0.0-linux-x86_64.tar.gz" -O logstash-9.0.0.tar.gz && gzip -t logstash-9.0.0.tar.gz 2>/dev/null && tar -tzf logstash-9.0.0.tar.gz | grep -q "bin/logstash" && { echo "✓ Logstash 9.0.0 downloaded successfully"; break; } || { [ $i -eq 3 ] && echo "✗ Failed to download Logstash 9.0.0 after 3 attempts" >&2 || rm -f logstash-9.0.0.tar.gz >/dev/null 2>&1; sleep 2; }; done ––– output ––– ✓ Logstash 9.0.0 downloaded successfully From 4bac89a4b1da990833dbfd7c8627ca1f068c4767 Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Tue, 11 Nov 2025 00:21:23 +0100 Subject: [PATCH 07/20] Deleted watchdog from searchd-with-flexible-ports.conf --- test/clt-tests/base/searchd-with-flexible-ports.conf | 1 - 1 file changed, 1 deletion(-) diff --git a/test/clt-tests/base/searchd-with-flexible-ports.conf b/test/clt-tests/base/searchd-with-flexible-ports.conf index ecb8d1a3a4..5fc6ba5a53 100644 --- a/test/clt-tests/base/searchd-with-flexible-ports.conf +++ b/test/clt-tests/base/searchd-with-flexible-ports.conf @@ -15,7 +15,6 @@ searchd { query_log_format = sphinxql query_log_commands = 1 server_id = ${INSTANCE} - watchdog = 0 } EOF From f884dd2a1866cd1393c6b0ff092078d5d613fa08 Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Tue, 11 Nov 2025 00:32:33 +0100 Subject: [PATCH 08/20] The extra file has been deleted. --- .../replication/test-sst-progress.rec | 165 ------------------ 1 file changed, 165 deletions(-) delete mode 100644 test/clt-tests/replication/test-sst-progress.rec diff --git a/test/clt-tests/replication/test-sst-progress.rec b/test/clt-tests/replication/test-sst-progress.rec deleted file mode 100644 index 750e0b6f33..0000000000 --- a/test/clt-tests/replication/test-sst-progress.rec +++ /dev/null @@ -1,165 +0,0 @@ -––– comment ––– -Test for SST (State Snapshot Transfer) progress monitoring during table replication -Issue: https://github.com/manticoresoftware/effyis/issues/390 - -Problem: When adding a large table to cluster via ALTER CLUSTER ADD, there was no way -to track replication progress. Users couldn't determine how much was copied or remaining. - -Solution: Added SST progress variables to SHOW STATUS: -- cluster__sst_total: Overall progress (0-100) -- cluster__sst_stage: Current stage (e.g., "send files") -- cluster__sst_stage_total: Progress of current stage (0-100) -- cluster__sst_tables: Total tables being transferred -- cluster__sst_table: Current table being transferred (e.g., "3 (products)") -- cluster__node_state: Node state (donor/joiner/synced) - -This test validates that SST progress variables exist in SHOW STATUS output. -––– input ––– -apt-get update -y > /dev/null; echo $? -––– output ––– -0 -––– input ––– -apt-get install -y iproute2 procps > /dev/null; echo $? -––– output ––– -0 -––– comment ––– -Add watchdog = 0 to base config if not already present -––– input ––– -grep -q "watchdog" test/clt-tests/base/searchd-with-flexible-ports.conf && echo "watchdog already exists" || { sed -i '/^searchd {/,/^}/ s/^\([[:space:]]*\)}$/\1\twatchdog = 0\n\1}/' test/clt-tests/base/searchd-with-flexible-ports.conf && echo "watchdog added"; } -––– output ––– -#!/watchdog already exists|watchdog added/!# -––– comment ––– -Start node 1 -––– input ––– -export INSTANCE=1 -––– output ––– -––– input ––– -mkdir -p /var/{run,lib,log}/manticore-${INSTANCE} -––– output ––– -––– input ––– -stdbuf -oL searchd --logreplication -c test/clt-tests/base/searchd-with-flexible-ports.conf > /dev/null -––– output ––– -––– input ––– -if timeout 10 grep -qm1 '\[BUDDY\] started' <(tail -n 1000 -f /var/log/manticore-${INSTANCE}/searchd.log); then echo 'Buddy started!'; else echo 'Timeout or failed!'; cat /var/log/manticore-${INSTANCE}/searchd.log; fi -––– output ––– -Buddy started! -––– comment ––– -Create cluster on node 1 -––– input ––– -mysql -h0 -P1306 -e "CREATE CLUSTER sst_test" -––– output ––– -––– input ––– -mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_status'\G" -––– output ––– -*************************** 1. row *************************** -Counter: cluster_sst_test_status - Value: primary -––– comment ––– -Create simple table and add to cluster -––– input ––– -mysql -h0 -P1306 -e "CREATE TABLE test_table (id bigint, title text)" -––– output ––– -––– input ––– -mysql -h0 -P1306 -e "ALTER CLUSTER sst_test ADD test_table" -––– output ––– -––– input ––– -mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_indexes'\G" -––– output ––– -*************************** 1. row *************************** -Counter: cluster_sst_test_indexes - Value: test_table -––– comment ––– -Start node 2 -––– input ––– -export INSTANCE=2 -––– output ––– -––– input ––– -mkdir -p /var/{run,lib,log}/manticore-${INSTANCE} -––– output ––– -––– input ––– -stdbuf -oL searchd --logreplication -c test/clt-tests/base/searchd-with-flexible-ports.conf > /dev/null -––– output ––– -––– input ––– -if timeout 10 grep -qm1 '\[BUDDY\] started' <(tail -n 1000 -f /var/log/manticore-${INSTANCE}/searchd.log); then echo 'Buddy started!'; else echo 'Timeout or failed!'; cat /var/log/manticore-${INSTANCE}/searchd.log; fi -––– output ––– -Buddy started! -––– comment ––– -Join node 2 to cluster - this triggers SST -––– input ––– -mysql -h0 -P2306 -e "JOIN CLUSTER sst_test AT '127.0.0.1:1312'" -––– output ––– -––– comment ––– -Verify SST progress variables exist on donor node -The main goal is to check that these variables are available, not their specific values -––– input ––– -mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_node_state'\G" -––– output ––– -*************************** 1. row *************************** -Counter: cluster_sst_test_node_state - Value: #!/.+/!# -––– comment ––– -Verify all 5 SST progress variables exist -––– input ––– -mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_%'\G" | grep "Counter:" | wc -l -––– output ––– -5 -––– comment ––– -Check that each individual SST variable exists -Values will be "-" if SST completed, or numbers/stage names if still active -––– input ––– -mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_total'\G" -––– output ––– -*************************** 1. row *************************** -Counter: cluster_sst_test_sst_total - Value: #!/.*/!# -––– input ––– -mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_stage'\G" -––– output ––– -*************************** 1. row *************************** -Counter: cluster_sst_test_sst_stage - Value: #!/.*/!# -––– input ––– -mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_stage_total'\G" -––– output ––– -*************************** 1. row *************************** -Counter: cluster_sst_test_sst_stage_total - Value: #!/.*/!# -––– input ––– -mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_tables'\G" -––– output ––– -*************************** 1. row *************************** -Counter: cluster_sst_test_sst_tables - Value: #!/.*/!# -––– input ––– -mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_sst_table'\G" -––– output ––– -*************************** 1. row *************************** -Counter: cluster_sst_test_sst_table - Value: #!/.*/!# -––– comment ––– -Verify both nodes are synced -––– input ––– -bash -c 'end=$((SECONDS+60)); while [ $SECONDS -lt $end ]; do all_synced=true; for port in 1306 2306; do mysql -h0 -P$port -e "SHOW STATUS LIKE '\''cluster_sst_test_status'\''\G" > /tmp/status_$port.log 2>/dev/null && grep -q "Value: primary" /tmp/status_$port.log || { all_synced=false; break; }; done; if $all_synced; then for port in 1306 2306; do echo "Port $port: Node synced"; done; exit 0; fi; sleep 1; done; echo "Timeout waiting for nodes to sync!"; exit 1' -––– output ––– -Port 1306: Node synced -Port 2306: Node synced -––– comment ––– -Verify table exists on both nodes -––– input ––– -mysql -h0 -P1306 -e "SHOW STATUS LIKE 'cluster_sst_test_indexes'\G" -––– output ––– -*************************** 1. row *************************** -Counter: cluster_sst_test_indexes - Value: test_table -––– input ––– -mysql -h0 -P2306 -e "SHOW STATUS LIKE 'cluster_sst_test_indexes'\G" -––– output ––– -*************************** 1. row *************************** -Counter: cluster_sst_test_indexes - Value: test_table -––– comment ––– -Cleanup: Remove watchdog from base config to avoid affecting other tests -––– input ––– -sed -i '/watchdog = 0/d' test/clt-tests/base/searchd-with-flexible-ports.conf; echo $? -––– output ––– -0 From 7b5562462279b20d6be9dbc19df97b97b4977e08 Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Thu, 13 Nov 2025 03:03:14 +0100 Subject: [PATCH 09/20] docs: update Logstash and Filebeat supported versions to 9.2 with validation tests --- manual/english/Integration/Filebeat.md | 4 +- manual/english/Integration/Logstash.md | 2 +- ...t-integrations-check-logstash-versions.rec | 55 ++++++++++++++++++- 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/manual/english/Integration/Filebeat.md b/manual/english/Integration/Filebeat.md index 31e3ee8dc2..76997e418e 100644 --- a/manual/english/Integration/Filebeat.md +++ b/manual/english/Integration/Filebeat.md @@ -4,7 +4,7 @@ [Filebeat](https://www.elastic.co/beats/filebeat) is a lightweight shipper for forwarding and centralizing log data. Once installed as an agent, it monitors the log files or locations you specify, collects log events, and forwards them for indexing, usually to Elasticsearch or Logstash. -Now, Manticore also supports the use of Filebeat as processing pipelines. This allows the collected and transformed data to be sent to Manticore just like to Elasticsearch. Currently, All versions to 9.0 are fully supported. +Now, Manticore also supports the use of Filebeat as processing pipelines. This allows the collected and transformed data to be sent to Manticore just like to Elasticsearch. Currently, versions up to 9.2 are supported. ## Filebeat configuration @@ -71,7 +71,7 @@ setup.template.name: "dpkg_log" setup.template.pattern: "dpkg_log" ``` -### Configuration for Filebeat 8.11 - 8.19 +### Configuration for Filebeat 8.11 - 8.x From version 8.11, output compression is enabled by default, so you must explicitly set `compression_level: 0` for compatibility with Manticore: diff --git a/manual/english/Integration/Logstash.md b/manual/english/Integration/Logstash.md index d294c219e6..54db5f926e 100755 --- a/manual/english/Integration/Logstash.md +++ b/manual/english/Integration/Logstash.md @@ -4,7 +4,7 @@ [Logstash](https://www.elastic.co/logstash) is a log management tool that collects data from a variety of sources, transforms it on the fly, and sends it to your desired destination. It is often used as a data pipeline for Elasticsearch, an open-source analytics and search engine. -Now, Manticore supports the use of Logstash as a processing pipeline. This allows the collected and transformed data to be sent to Manticore just like to Elasticsearch. Currently, versions 7.6+ are supported. +Now, Manticore supports the use of Logstash as a processing pipeline. This allows the collected and transformed data to be sent to Manticore just like to Elasticsearch. Currently, versions up to 9.2 are supported. Let’s examine a simple example of a Logstash config file used for indexing `dpkg.log`, a standard log file of the Debian package manager. The log itself has a simple structure, as shown below: diff --git a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec index f6901ed917..9bf97a5ee4 100644 --- a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec +++ b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec @@ -57,7 +57,28 @@ version_compare($0, latest) > 0') if [ -n "$NEW_VERSIONS" ]; then echo "🆕 NEW Logstash versions detected:" echo "$NEW_VERSIONS" - echo "❌ Need to test new versions and update the list!" + echo "" + echo "❌ Need to test new versions and update the following:" + echo "" + echo "📝 Files to update:" + echo " 1. test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec" + echo " - Update TESTED_VERSIONS list" + echo " - Update LATEST_TESTED_VERSION='$LATEST_TESTED_VERSION' -> new version" + echo "" + echo " 2. test/clt-tests/integrations/logstash/test-integrations-test-logstash-versions.rec" + echo " - Add new test section for new version" + echo "" + echo " 3. Update documentation with new version support:" + echo " - manual/english/Integration/Logstash.md" + echo " - Search for: 'versions up to X.X'" + echo " - Update version number to latest tested" + echo "" + echo " 4. Update website content (separate repository):" + echo " - https://github.com/manticoresoftware/site" + echo " - content/english/blog/integration-of-manticore-with-logstash-filebeat/index.md" + echo " - Search for: 'Logstash versions up to X.X'" + echo " - Update version number to latest tested" + echo "" exit 1 else echo "✅ No new versions found after $LATEST_TESTED_VERSION" @@ -94,3 +115,35 @@ Using tested versions: 9.0 9.1 9.2 +––– input ––– +bash << 'SCRIPT' +# Check documentation versions for Logstash +echo "Checking manual documentation for Logstash version references..." + +# Latest tested version +LOGSTASH_LATEST="9.2" + +# Check Logstash in manual documentation +LOGSTASH_MANUAL="manual/english/Integration/Logstash.md" +if [ -f "$LOGSTASH_MANUAL" ]; then + echo "✓ Checking $LOGSTASH_MANUAL" + if grep -q "versions up to ${LOGSTASH_LATEST}" "$LOGSTASH_MANUAL"; then + echo "✅ Logstash manual contains correct version: up to ${LOGSTASH_LATEST}" + else + echo "❌ Logstash manual does NOT contain expected version: up to ${LOGSTASH_LATEST}" >&2 + echo "Found in manual:" >&2 + grep -i "versions.*supported\|Currently.*versions" "$LOGSTASH_MANUAL" || echo "No version info found" >&2 + exit 1 + fi +else + echo "⚠ Logstash manual not found at $LOGSTASH_MANUAL (skipping check)" +fi + +echo "" +echo "✅ Logstash manual documentation check passed!" +SCRIPT +––– output ––– +Checking manual documentation for Logstash version references... +✓ Checking manual/english/Integration/Logstash.md +✅ Logstash manual contains correct version: up to 9.2 +✅ Logstash manual documentation check passed! From ce5212b90a4b78c8425b5ac050568343b5605249 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 13 Nov 2025 02:05:15 +0000 Subject: [PATCH 10/20] docs: Auto-translate documentation changes by PavelShilin89 --- manual/chinese/Integration/Filebeat.md | 4 ++-- manual/russian/Integration/Filebeat.md | 4 ++-- translation.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/manual/chinese/Integration/Filebeat.md b/manual/chinese/Integration/Filebeat.md index e4b374d2bf..5cb555870b 100644 --- a/manual/chinese/Integration/Filebeat.md +++ b/manual/chinese/Integration/Filebeat.md @@ -4,7 +4,7 @@ [Filebeat](https://www.elastic.co/beats/filebeat) 是一个轻量级的日志数据转发和集中器。安装为代理后,它会监控您指定的日志文件或位置,收集日志事件,并将其转发以进行索引,通常是发送到 Elasticsearch 或 Logstash。 -现在,Manticore 也支持将 Filebeat 用作处理管道。这允许收集和转换后的数据像发送到 Elasticsearch 一样发送到 Manticore。目前,所有版本到 9.0 都完全支持。 +现在,Manticore 也支持将 Filebeat 用作处理管道。这允许将收集和转换后的数据像发送到 Elasticsearch 一样发送到 Manticore。目前支持的版本最高到 9.2。 ## Filebeat 配置 @@ -71,7 +71,7 @@ setup.template.name: "dpkg_log" setup.template.pattern: "dpkg_log" ``` -### Filebeat 8.11 - 8.19 的配置 +### Filebeat 8.11 - 8.x 的配置 从 8.11 版本开始,输出压缩默认启用,因此您必须显式设置 `compression_level: 0` 以兼容 Manticore: diff --git a/manual/russian/Integration/Filebeat.md b/manual/russian/Integration/Filebeat.md index a8472e3fa4..535936b249 100644 --- a/manual/russian/Integration/Filebeat.md +++ b/manual/russian/Integration/Filebeat.md @@ -4,7 +4,7 @@ [Filebeat](https://www.elastic.co/beats/filebeat) — это легковесный агент для пересылки и централизации логов. После установки в качестве агента он отслеживает указанные вами файлы логов или локации, собирает события логов и пересылает их для индексирования, обычно в Elasticsearch или Logstash. -Теперь Manticore также поддерживает использование Filebeat в качестве конвейеров обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время полностью поддерживаются все версии до 9.0. +Теперь Manticore также поддерживает использование Filebeat в качестве обработчиков данных. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии до 9.2. ## Конфигурация Filebeat @@ -71,7 +71,7 @@ setup.template.name: "dpkg_log" setup.template.pattern: "dpkg_log" ``` -### Конфигурация для Filebeat 8.11 - 8.19 +### Конфигурация для Filebeat 8.11 - 8.x Начиная с версии 8.11, сжатие вывода включено по умолчанию, поэтому для совместимости с Manticore нужно явно указать `compression_level: 0`: diff --git a/translation.json b/translation.json index b3757f0321..71b10ca791 100644 --- a/translation.json +++ b/translation.json @@ -56,7 +56,7 @@ "Reporting_bugs.md": "232303906b53faa4db3b16577b0f7614", "Quick_start_guide.md": "8842df82ece616b247b745b9622a63f2", "Integration/Kafka.md": "7ed5bc9028d7199480e1e3c080df1642", - "Integration/Filebeat.md": "9e73c0626e23fe7c68e4cd22d03180fc", + "Integration/Filebeat.md": "025bb4b6c99386364c9ad87cae846531", "Integration/Kibana.md": "7cc26ce7220e7d76c1a99249ce81c06f", "Integration/DBeaver.md": "9996a980e9b17b9fc86706e45de024c1", "Integration/Apache_Superset.md": "e529ca944102df28077be69db5e828fe", From 465c5602250b94e61c53d2e36b8c6d2c9568e01d Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Thu, 13 Nov 2025 03:07:58 +0100 Subject: [PATCH 11/20] test: remove manual documentation check from version test Following Grafana test pattern, this test now only: - Checks for new Logstash versions - Displays comprehensive update instructions when new versions found Manual documentation validation is not performed in this test as: 1. Test runs from different directory making file paths complex 2. Grafana test follows same pattern (instructions only) 3. Documentation updates are validated during PR review --- ...t-integrations-check-logstash-versions.rec | 31 ------------------- 1 file changed, 31 deletions(-) diff --git a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec index 9bf97a5ee4..ac4f9524b2 100644 --- a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec +++ b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec @@ -115,35 +115,4 @@ Using tested versions: 9.0 9.1 9.2 -––– input ––– -bash << 'SCRIPT' -# Check documentation versions for Logstash -echo "Checking manual documentation for Logstash version references..." - -# Latest tested version -LOGSTASH_LATEST="9.2" - -# Check Logstash in manual documentation -LOGSTASH_MANUAL="manual/english/Integration/Logstash.md" -if [ -f "$LOGSTASH_MANUAL" ]; then - echo "✓ Checking $LOGSTASH_MANUAL" - if grep -q "versions up to ${LOGSTASH_LATEST}" "$LOGSTASH_MANUAL"; then - echo "✅ Logstash manual contains correct version: up to ${LOGSTASH_LATEST}" - else - echo "❌ Logstash manual does NOT contain expected version: up to ${LOGSTASH_LATEST}" >&2 - echo "Found in manual:" >&2 - grep -i "versions.*supported\|Currently.*versions" "$LOGSTASH_MANUAL" || echo "No version info found" >&2 - exit 1 - fi -else - echo "⚠ Logstash manual not found at $LOGSTASH_MANUAL (skipping check)" -fi -echo "" -echo "✅ Logstash manual documentation check passed!" -SCRIPT -––– output ––– -Checking manual documentation for Logstash version references... -✓ Checking manual/english/Integration/Logstash.md -✅ Logstash manual contains correct version: up to 9.2 -✅ Logstash manual documentation check passed! From 5d613de7a52606f06c3db17ffe5efb89bf8bcada Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Thu, 13 Nov 2025 03:08:19 +0100 Subject: [PATCH 12/20] chore: remove translation.json as it's no longer used This file was removed from master branch as translation workflow has changed. Removing it to resolve merge conflicts. --- translation.json | 183 ----------------------------------------------- 1 file changed, 183 deletions(-) delete mode 100644 translation.json diff --git a/translation.json b/translation.json deleted file mode 100644 index 71b10ca791..0000000000 --- a/translation.json +++ /dev/null @@ -1,183 +0,0 @@ -{ - "Read_this_first.md": "642becd7e130ff770d8ff61d8a753431", - "Server_settings/Setting_variables_online.md": "327e2b148938c89c5559d5f4887cc7b8", - "Server_settings/Inheritance_of_index_and_source_declarations.md": "cc21b8f5ff81c7217c4a7d425b345df8", - "Server_settings/Common.md": "7696e06cbe7fa349d75d893e3c2594a1", - "Server_settings/Special_suffixes.md": "e3bad5aac4f2ca0d7587e8c218b30a70", - "Server_settings/Comments.md": "8a90a0952887aa394c1a92795bc1f846", - "Server_settings/Scripted_configuration.md": "edfafe19daec7926fce9f7c40ba8088d", - "Miscellaneous_tools.md": "0598f5310d72921251e1ee40f953313a", - "Security/SSL.md": "7e1ebe22fd02aaba9871d9806341b8f4", - "Security/Read_only.md": "080f28da0d84c2933145cdc7e5a54bbd", - "Securing_and_compacting_a_table/Freezing_a_table.md": "b947093c1b85ba6aae36dbe9bbd89bcf", - "Securing_and_compacting_a_table/Isolation_during_flushing_and_merging.md": "21f305bb96f7e1de31db99fd39148bea", - "Securing_and_compacting_a_table/Flushing_hostnames.md": "92ed6d39eed804cabc5a707845d2e022", - "Securing_and_compacting_a_table/Compacting_a_table.md": "ede50ebe2a15fd8732402a1661840936", - "Securing_and_compacting_a_table/Flushing_attributes.md": "0fde3506aabd17888b590223da54b759", - "Securing_and_compacting_a_table/Flushing_RAM_chunk_to_disk.md": "ed0d6e81e9a38d016d8ff06230c80fe3", - "Securing_and_compacting_a_table/Backup_and_restore.md": "0321bd8ba872ffc7a7180e5d21790ee2", - "Securing_and_compacting_a_table/RT_table_structure.md": "d7fd63263f10dde8cd63736491c79944", - "Creating_a_cluster/Creating_a_cluster.md": "fbd703f7e62c298216f8121d9d5194a9", - "Creating_a_cluster/Setting_up_replication/Creating_a_replication_cluster.md": "aa9743d7ca774e0a490602a32d1e5cd3", - "Creating_a_cluster/Setting_up_replication/Deleting_a_replication_cluster.md": "96fb0bf81a2bc05076d7e14b6aadcb68", - "Creating_a_cluster/Setting_up_replication/Restarting_a_cluster.md": "00ec05b3270bd0e88af65940b57cb554", - "Creating_a_cluster/Setting_up_replication/Setting_up_replication.md": "8a9fee6c0a90fbc4456c5215b0a504f7", - "Creating_a_cluster/Setting_up_replication/Adding_and_removing_a_table_from_a_replication_cluster.md": "d6236c6400fe88f7a452044961444eb2", - "Creating_a_cluster/Setting_up_replication/Joining_a_replication_cluster.md": "7318bd8e4d75bed79b08cbd65a225608", - "Creating_a_cluster/Setting_up_replication/Managing_replication_nodes.md": "a3fd5bf33707005883b3e8b0b162334b", - "Creating_a_cluster/Setting_up_replication/Cluster_recovery.md": "e675c6fc57ea8d8a73c6569e8b5a897f", - "Creating_a_cluster/Setting_up_replication/Replication_cluster_status.md": "eca3d22cab763e2a1a7c04acaf0b8cb1", - "Creating_a_cluster/Remote_nodes/Load_balancing.md": "1ac08d68495cf725aa2c8a68a43ecb51", - "Creating_a_cluster/Remote_nodes/Mirroring.md": "9d9913659ee087f7b2d54ca27dbb37d7", - "Creating_a_cluster/Adding_a_new_node.md": "0368cae43a749e96ab855c00b62188cb", - "Creating_a_cluster/Remote_nodes.md": "6f18a115fdd79001097ba7082580fa54", - "Searching/Collations.md": "633d74b6d31f3eaef70812ac32ad8836", - "Searching/Search_results.md": "0edc990e8bf2768585b6aa015e77f80b", - "Searching/Geo_search.md": "7f2fc8151f86e8842a0c4aa5a5a0c0d9", - "Searching/Cost_based_optimizer.md": "2c6ff62395264941264a78b2d0b946a9", - "Searching/Multi-queries.md": "b03de70e3a448a54558dbad8a86ee619", - "Searching/Intro.md": "813cc03bae338eec669d1a956a166627", - "Searching/Filters.md": "1b9dcd5a67627842b7c48ddc105984c0", - "Searching/Pagination.md": "7d24f824a0ac1a69288f55a8c33b7761", - "Searching/Joining.md": "05bb96bf4216941a13eae7e55a045322", - "Searching/Sorting_and_ranking.md": "d9d28d3011afa90d1e47bf184e46d6de", - "Searching/Highlighting.md": "447d7a6fa5c7ad5e0f732f5990e723e5", - "Searching/Autocomplete.md": "80abbd97f820a3e2d7299d86fdd00dea", - "Searching/Distributed_searching.md": "9595b0608ee94270100d454163dbc778", - "Searching/Sub-selects.md": "10ddf90ecde0988b416b8782c42308a1", - "Searching/Query_cache.md": "d0c881a3530d594d29eee3a7109df44b", - "Searching/Percolate_query.md": "195f43473430eab5ba73b5babb0375ce", - "Searching/Full_text_matching/Profiling.md": "398b040e4ce41502466ae056842ea8a8", - "Searching/Full_text_matching/Escaping.md": "54bfdca8fa2e27516e4434c0756c3ab4", - "Searching/Full_text_matching/Basic_usage.md": "eb5c5014c70097582d445e59cb2e9b15", - "Searching/Grouping.md": "1ebf8e8c9c0927de68dff2833f8f5134", - "Searching/Expressions.md": "f89c74fe818b4478e4775ac789f54990", - "Searching/Faceted_search.md": "d086c5da91521a2e0528cf371745fa70", - "Reporting_bugs.md": "232303906b53faa4db3b16577b0f7614", - "Quick_start_guide.md": "8842df82ece616b247b745b9622a63f2", - "Integration/Kafka.md": "7ed5bc9028d7199480e1e3c080df1642", - "Integration/Filebeat.md": "025bb4b6c99386364c9ad87cae846531", - "Integration/Kibana.md": "7cc26ce7220e7d76c1a99249ce81c06f", - "Integration/DBeaver.md": "9996a980e9b17b9fc86706e45de024c1", - "Integration/Apache_Superset.md": "e529ca944102df28077be69db5e828fe", - "Connecting_to_the_server/HTTP.md": "0e5da23c36f8870e856e26fbf6400b9d", - "Connecting_to_the_server/MySQL_protocol.md": "0b2af74e08a43f58c550a1d33b01eb54", - "Introduction.md": "42eddfbe0248c460659a99112b9a64d7", - "Installation/Windows.md": "0b16621215217121647308188d9cda1c", - "Installation/MacOS.md": "f8829f76f40e4fa652aa5ef38d9f1ae1", - "Installation/Debian_and_Ubuntu.md": "e247c6704fec97b5b4dd73b81daa1997", - "Installation/Manticore_Buddy.md": "0048b8319f34fc7a340827f2681a29e3", - "Installation/Migration_from_Sphinx.md": "0ef6b1a28fe361c671d75daebaa2a488", - "Installation/Docker.md": "662c6fbba706dc962409b40e8a2156ad", - "Installation/Installation.md": "c1223f22f6207851ed33a5f1758569ee", - "Extensions/FEDERATED.md": "a0854843302c83875aaa07a43e78c350", - "Extensions/UDFs_and_Plugins/UDFs_and_Plugins.md": "40e47f7e2f0538da8915ce72b8e109bb", - "Extensions/UDFs_and_Plugins/Plugins/Creating_a_plugin.md": "331b8f584161ab8f6ecf5edc4f1a0356", - "Extensions/UDFs_and_Plugins/Plugins/Token_filter_plugins.md": "490b6dad9deb92e980cb3efa71596552", - "Extensions/UDFs_and_Plugins/Plugins/Ranker_plugins.md": "2c25ff16f692c93c30342544c65051cc", - "Extensions/UDFs_and_Plugins/Plugins/Deleting_a_plugin.md": "c023210146c2f7dd35001a0100b1b528", - "Extensions/UDFs_and_Plugins/Plugins/Enabling_and_disabling_buddy_plugins.md": "57b55cdcdce0bad26146ea7cd4bda966", - "Extensions/UDFs_and_Plugins/Plugins/Reloading_plugins.md": "d7739fb9f826b657ebb463e8f69af851", - "Extensions/UDFs_and_Plugins/UDF.md": "78035d6fb5fe8e980b50998de0bb979e", - "Extensions/UDFs_and_Plugins/Listing_plugins.md": "2adc966303d3717f057d96ae2eeba63e", - "Extensions/UDFs_and_Plugins/UDF/Deleting_a_function.md": "1abf62ed870494aaf530c923c042aff8", - "Extensions/UDFs_and_Plugins/UDF/Creating_a_function.md": "aac6487064cf3436836d0f96d27d7b0f", - "Extensions/SphinxSE.md": "663e1915833e55f12df297636803569c", - "Listing_tables.md": "1d48e5d79f5f210be8ec38fcc1ec970f", - "Starting_the_server/Manually.md": "6fa10a410656882a4ae073ba24143814", - "Starting_the_server/Windows.md": "b25053d62a5e2a8a4b7a04fc7a23d967", - "Starting_the_server/Linux.md": "15ee7faa1f25e7bff7e04cc6e4f7c797", - "Starting_the_server/MacOS.md": "f214dc96919ec4560004ed7d4c6cee5a", - "Starting_the_server/Docker.md": "2bb994024bc95687d7c279ef1d633b3e", - "Connecting_to_the_server.md": "8c72319b4c90939b7f8716428e5510bc", - "Deleting_a_table.md": "0664cfbfe8e94ecbb4e44c4260c6fbef", - "Node_info_and_management/KILL.md": "c75b5ca03bad4fbb514c544271e7c144", - "Node_info_and_management/SHOW_WARNINGS.md": "63581e9e32e762eaf7a7b0e8dcfbcf19", - "Node_info_and_management/Node_status.md": "48131d7a472523333c5d6608a8d89a51", - "Node_info_and_management/SHOW_VERSION.md": "070218388498bdef14f984029f6eb40d", - "Node_info_and_management/SHOW_VARIABLES.md": "c8726edde6474ad6a45f54559a3e9ca9", - "Node_info_and_management/Profiling/Query_profile.md": "9136879b79ea9115802919ffd9f17469", - "Node_info_and_management/Profiling/Query_plan.md": "a9f6f59f0825c77ca64802f92316c600", - "Node_info_and_management/Table_settings_and_status/SHOW_TABLE_SETTINGS.md": "c7ed1ac7c0cd514f7a467913f4e4394c", - "Node_info_and_management/Table_settings_and_status/SHOW_TABLE_INDEXES.md": "09b72dbe83241b71e7ddbb3fbb6f7df7", - "Node_info_and_management/Table_settings_and_status/SHOW_TABLE_STATUS.md": "c3ad2b499af93e0e3efbca074fa65dc3", - "Node_info_and_management/SHOW_META.md": "04c43522b2be71be87d72aa62c2936e5", - "Node_info_and_management/SHOW_QUERIES.md": "a3e7f7279f24786980d3503629f1b2ed", - "Functions.md": "7790135af658522014c24b1190ab2ab6", - "Functions/Type_casting_functions.md": "bbe77053eec0c2fefd6d935bd37d355e", - "Functions/String_functions.md": "20671dbca5933bbf77d6e1d3e14e6d69", - "Functions/Date_and_time_functions.md": "d6086a2bfd889705cb8b64b5c777ab08", - "Functions/Arrays_and_conditions_functions.md": "594b60e4353103ed8ce3bc0f80c36477", - "Functions/Other_functions.md": "8d5e236d731dd3833c2807f596dfe636", - "Functions/Searching_and_ranking_functions.md": "701423fcde105ae566b3e2b452761484", - "Functions/Mathematical_functions.md": "f53b4c1e61c3d24f51cc81fd3e52fd09", - "Functions/Geo_spatial_functions.md": "d1636edf973f5fc3c1788cbf74aafd4e", - "Telemetry.md": "1ccff6aaa70e97e5a9c1d7943704dfbd", - "Creating_a_table/Local_tables/Percolate_table.md": "0e813ebd23009eb115737044a75dde9f", - "Creating_a_table/Local_tables/Real-time_table.md": "a9a6c2d3bf6f142ba5b89bda7b68c844", - "Creating_a_table/Local_tables/Plain_table.md": "208730dd14ae02d0dea4e14887c8cc76", - "Creating_a_table/Local_tables/Plain_and_real-time_table_settings.md": "8d7af65137a6e8e593aab4eb2359ae8d", - "Creating_a_table/Local_tables/Template_table.md": "d31d0b063e3b8bdf6cc790afa74fa683", - "Creating_a_table/NLP_and_tokenization/Exceptions.md": "512e4ac823ce03af758d75d99b74915d", - "Creating_a_table/NLP_and_tokenization/Supported_languages.md": "096e5f0b5592e0390cdc1529f76fe15f", - "Creating_a_table/NLP_and_tokenization/Morphology.md": "862aa5ffc88c5a79cba0f540b74c18e0", - "Creating_a_table/NLP_and_tokenization/Wildcard_searching_settings.md": "d717e67a2755acbd5552597232009f88", - "Creating_a_table/NLP_and_tokenization/Data_tokenization.md": "33af919293a4f0c9a4d5d989f1dc0aa4", - "Creating_a_table/NLP_and_tokenization/Languages_with_continuous_scripts.md": "6db86b270103dea5fe010c6c5d7861c2", - "Creating_a_table/NLP_and_tokenization/Advanced_HTML_tokenization.md": "04b03292407c3a31d97c6801de23791b", - "Creating_a_table/NLP_and_tokenization/Wordforms.md": "f48f2ae55833bb785bbd80b1d1e3ef99", - "Creating_a_table/NLP_and_tokenization/Ignoring_stop-words.md": "28fd7fe1ae45ce0e0c610d11de66352c", - "Creating_a_table/Local_tables.md": "7c65d8247f433033217581533a103558", - "Creating_a_table/Creating_a_distributed_table/Creating_a_distributed_table.md": "cf82fd957e8060d2a48236364bfc2c08", - "Creating_a_table/Creating_a_distributed_table/Creating_a_local_distributed_table.md": "38771aeb1b5db79124dfc5664ac418f2", - "Creating_a_table/Creating_a_distributed_table/Remote_tables.md": "4b7b326ae8a823625bb50eba2203dc20", - "Starting_the_server.md": "598bdd54907b881b11f09ae7c5e9e4ce", - "Openapi.md": "3b2d4332c50f9ad5004afb7673c0208c", - "Logging/Query_logging.md": "5a6e2a1dd9ba2a1bc40a499d0dfdeb92", - "Logging/Docker_logging.md": "a6c8f47b7c779bee2a9f5c6109510f35", - "Logging/Binary_logging.md": "dbe4521084fca8e94c5902795ce685d8", - "Logging/Server_logging.md": "b47b3b53ed3af493a510afeec9288f34", - "Logging/Rotating_query_and_server_logs.md": "52755265688baa5cfa8cf8b8b10e7080", - "Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_CSV,TSV.md": "58cce80a7dcb2096cdb17011b3fd49ab", - "Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_XML_streams.md": "e1da2b2b5963cf4c80c389eaee6e3e6c", - "Data_creation_and_modification/Adding_data_from_external_storages/Adding_data_to_tables/Merging_tables.md": "443285ce211cc417a664469ef10c8fa3", - "Data_creation_and_modification/Adding_data_from_external_storages/Adding_data_to_tables/Attaching_one_table_to_another.md": "d81f7e69438629a198c3497d373128b7", - "Data_creation_and_modification/Adding_data_from_external_storages/Adding_data_to_tables/Importing_table.md": "dec4ff74a52898b3a76ba76f44de6be8", - "Data_creation_and_modification/Adding_data_from_external_storages/Adding_data_to_tables/Killlist_in_plain_tables.md": "54a598adf8e99bb1c7369cd7040a66c2", - "Data_creation_and_modification/Adding_data_from_external_storages/Main_delta.md": "4828527853f46bf32f8734e16afb33bb", - "Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_databases/Processing_fetched_data.md": "88238fa72b8771fc63e2766ca07e505e", - "Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_databases/Introduction.md": "1ef5ffc3e9bc395d36640b285f2fa41d", - "Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_databases/Database_connection.md": "015a4f33bc40eea53aa928d62935bdb2", - "Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_databases/Ranged_queries.md": "62f4dd9d646939f47c88051f97b7c7e5", - "Data_creation_and_modification/Adding_data_from_external_storages/Fetching_from_databases/Execution_of_fetch_queries.md": "dec84b49bbe3a6375763f663a640cfec", - "Data_creation_and_modification/Adding_data_from_external_storages/Plain_tables_creation.md": "06567e3e6a2a7c097dd8b51b486e500f", - "Data_creation_and_modification/Adding_data_from_external_storages/Rotating_a_table.md": "71ec412b984987b70c7ce4b3eec70d3b", - "Data_creation_and_modification/Deleting_documents.md": "3553f3af1d0250f2a6d85af26c229419", - "Data_creation_and_modification/Adding_data_from_external_storages.md": "055b28f9902e90022ff0c44d5960b740", - "Data_creation_and_modification/Data_creation_and_modification.md": "569e7deca8f0485e49ead83346608f87", - "Data_creation_and_modification/Adding_documents_to_a_table/Adding_rules_to_a_percolate_table.md": "c9f7cb84d3f207d71f7e0abf1fd59e7a", - "Data_creation_and_modification/Transactions.md": "150bdef4f5821e8f438ac69f34aaaa78", - "Data_creation_and_modification/Updating_documents/REPLACE.md": "528fc315dd6c6cbaac073ef70a954279", - "Data_creation_and_modification/Updating_documents/REPLACE_vs_UPDATE.md": "40bc01e20427ca60c03219faa37f52c1", - "Data_creation_and_modification/Updating_documents/UPDATE.md": "cd2be32a59903de07f40f2eed6bc1628", - "Creating_a_table/NLP_and_tokenization/Low-level_tokenization.md": "7dd1833dc6a4d2cc7811453b5f626b43", - "Searching/Spell_correction.md": "5f651cae962168c1da8365633a9ad9ca", - "Installation/Compiling_from_sources.md": "4ca1372b94a832235042f6aab54ecdb0", - "Node_info_and_management/SHOW_THREADS.md": "c5f1478f99f19f93f6a9bbe2bbfc69bd", - "Creating_a_table/Data_types.md": "f9742fb729ccad2604dcd14573ce2554", - "Data_creation_and_modification/Adding_documents_to_a_table/Adding_documents_to_a_real-time_table.md": "6de805300242d0e9783a17cc03ea8905", - "Creating_a_table.md": "cdfc4d838cb6f52f1d6dd4b1a90059fa", - "Installation/RHEL_and_Centos.md": "29819c4ffed5a0dce03fb62f80ad9ac3", - "Securing_and_compacting_a_table/Flushing_RAM_chunk_to_a_new_disk_chunk.md": "054329432471757df9fc181db74bc1df", - "Emptying_a_table.md": "a54f1b988ae6045637cca819474efd70", - "References.md": "2568d7724419942bbb6856354e406c5c", - "Changelog.md": "63be405b09c886a59769333005d19d47", - "Searching/Full_text_matching/Operators.md": "3d381c07770897772da85df6dda98305", - "Updating_table_schema_and_settings.md": "39fe1c80063e98752083b24bb132016a", - "Searching/KNN.md": "de6055f46bdad897aa94fe39a13b2e1f", - "README.md": "eff1619e48f822a69605ff5e69ab79e6", - "Searching/Options.md": "2fb7f43595ee0ce2fca0919a6b0b36bb", - "Searching/Full_text_matching/Boolean_optimization.md": "ec69041e4f95354af0641401a37aad06", - "Server_settings/Searchd.md": "9b41b07ac3b91e71e4695d80009fc545", - "Changelog-new.md": "d44f1f48f708aa8ed14a24eec8d0792d" -} From 765a84f2aca37f1b0ed8cb2cc999fdbbd74ba37e Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Mon, 17 Nov 2025 00:02:44 +0100 Subject: [PATCH 13/20] Changed version format from "up to 9.2" to "7.6-9.2" in Logstash.md, Add automated documentation validation test --- .github/workflows/nightly_integration.yml | 4 +- manual/english/Integration/Logstash.md | 2 +- ...t-integrations-check-logstash-versions.rec | 103 +++++++++++++----- 3 files changed, 78 insertions(+), 31 deletions(-) diff --git a/.github/workflows/nightly_integration.yml b/.github/workflows/nightly_integration.yml index 02d3d377be..3cdb619ccf 100644 --- a/.github/workflows/nightly_integration.yml +++ b/.github/workflows/nightly_integration.yml @@ -109,9 +109,9 @@ jobs: - uses: manticoresoftware/clt@0.7.3 with: test_prefix: test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions - image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest + image: manticoresearch/dind:v1 comment_mode: failures - run_args: --privileged + run_args: --privileged -v $(pwd)/manual:/manual ui_host: "https://clt.manticoresearch.com" test_logstash_versions: diff --git a/manual/english/Integration/Logstash.md b/manual/english/Integration/Logstash.md index 54db5f926e..5808791527 100755 --- a/manual/english/Integration/Logstash.md +++ b/manual/english/Integration/Logstash.md @@ -4,7 +4,7 @@ [Logstash](https://www.elastic.co/logstash) is a log management tool that collects data from a variety of sources, transforms it on the fly, and sends it to your desired destination. It is often used as a data pipeline for Elasticsearch, an open-source analytics and search engine. -Now, Manticore supports the use of Logstash as a processing pipeline. This allows the collected and transformed data to be sent to Manticore just like to Elasticsearch. Currently, versions up to 9.2 are supported. +Now, Manticore supports the use of Logstash as a processing pipeline. This allows the collected and transformed data to be sent to Manticore just like to Elasticsearch. Currently, versions 7.6-9.2 are supported. Let’s examine a simple example of a Logstash config file used for indexing `dpkg.log`, a standard log file of the Debian package manager. The log itself has a simple structure, as shown below: diff --git a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec index ac4f9524b2..b30026dbda 100644 --- a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec +++ b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec @@ -1,12 +1,8 @@ -––– block: ../../base/start-searchd-with-buddy ––– ––– input ––– -set -b +set -e ––– output ––– ––– input ––– -export PATH=/usr/bin:/usr/local/bin:/usr/sbin:/sbin:/bin -––– output ––– -––– input ––– -apt-get update > /dev/null 2>&1 && apt-get install -y curl jq > /dev/null 2>&1; echo $? +apk add --no-cache curl jq > /dev/null 2>&1; echo $? ––– output ––– 0 ––– input ––– @@ -38,6 +34,7 @@ TESTED_VERSIONS="7.17 9.2" # Check for NEW versions (after latest tested) +# WARNING: Also update LOGSTASH_LATEST below when changing this! LATEST_TESTED_VERSION="9.2" NEW_VERSIONS=$(curl -s "https://hub.docker.com/v2/repositories/library/logstash/tags/?page_size=100" \ | jq -r ".results[].name" \ @@ -55,29 +52,13 @@ function version_compare(v1, v2) { version_compare($0, latest) > 0') if [ -n "$NEW_VERSIONS" ]; then - echo "🆕 NEW Logstash versions detected:" - echo "$NEW_VERSIONS" - echo "" - echo "❌ Need to test new versions and update the following:" - echo "" - echo "📝 Files to update:" - echo " 1. test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec" - echo " - Update TESTED_VERSIONS list" - echo " - Update LATEST_TESTED_VERSION='$LATEST_TESTED_VERSION' -> new version" - echo "" - echo " 2. test/clt-tests/integrations/logstash/test-integrations-test-logstash-versions.rec" - echo " - Add new test section for new version" - echo "" - echo " 3. Update documentation with new version support:" - echo " - manual/english/Integration/Logstash.md" - echo " - Search for: 'versions up to X.X'" - echo " - Update version number to latest tested" + echo "🆕 NEW Logstash versions detected: $NEW_VERSIONS" echo "" - echo " 4. Update website content (separate repository):" - echo " - https://github.com/manticoresoftware/site" - echo " - content/english/blog/integration-of-manticore-with-logstash-filebeat/index.md" - echo " - Search for: 'Logstash versions up to X.X'" - echo " - Update version number to latest tested" + echo "📝 Update required:" + echo " 1. test-integrations-check-logstash-versions.rec - Update TESTED_VERSIONS and LATEST_TESTED_VERSION" + echo " 2. test-integrations-test-logstash-versions.rec - Add test for new version" + echo " 3. manual/english/Integration/Logstash.md - Update version range (e.g., 7.6-[NEW_VERSION])" + echo " 4. site repo: blog/integration-of-manticore-with-logstash-filebeat/index.md" echo "" exit 1 else @@ -115,4 +96,70 @@ Using tested versions: 9.0 9.1 9.2 +––– input ––– +bash << 'SCRIPT' +# Check documentation versions for Logstash +echo "Checking Logstash version references in documentation..." +echo "" + +# Must match LATEST_TESTED_VERSION above +LOGSTASH_LATEST="9.2" +# 1. Check manual documentation (local file mounted via workflow) +echo "=== Checking manual documentation ===" +LOGSTASH_MANUAL="/manual/english/Integration/Logstash.md" +if [ -f "$LOGSTASH_MANUAL" ]; then + echo "✓ Checking $LOGSTASH_MANUAL" + FOUND_VERSION=$(grep -o "versions [0-9.–-]* are supported" "$LOGSTASH_MANUAL" | head -1) + if echo "$FOUND_VERSION" | grep -q "${LOGSTASH_LATEST}"; then + echo "✅ Manual: $FOUND_VERSION" + else + echo "❌ Manual must contain version ${LOGSTASH_LATEST}" >&2 + echo " Current: $FOUND_VERSION" >&2 + echo " Update to: versions 7.6-${LOGSTASH_LATEST} are supported" >&2 + exit 1 + fi +else + echo "❌ Manual not found at $LOGSTASH_MANUAL" >&2 + echo "Manual must be mounted via workflow: -v \$(pwd)/manual:/manual" >&2 + exit 1 +fi + +echo "" +echo "=== Checking website blog post ===" + +# 2. Check website blog post +BLOG_URL="https://manticoresearch.com/blog/integration-of-manticore-with-logstash-filebeat/" +echo "✓ Fetching $BLOG_URL" + +# Try curl first, fallback to wget +if command -v curl > /dev/null 2>&1; then + BLOG_CONTENT=$(curl -s "$BLOG_URL") +elif command -v wget > /dev/null 2>&1; then + BLOG_CONTENT=$(wget -qO- "$BLOG_URL") +else + echo "❌ Neither curl nor wget available" >&2 + exit 1 +fi +if [ -z "$BLOG_CONTENT" ]; then + echo "⚠️ WARNING: Blog fetch failed - skipping" >&2 +elif echo "$BLOG_CONTENT" | grep -E "Logstash versions.*(up to |-|–)${LOGSTASH_LATEST}" > /dev/null; then + echo "✅ Blog: contains ${LOGSTASH_LATEST}" +else + BLOG_VERSION=$(echo "$BLOG_CONTENT" | grep -o "Logstash versions [0-9.–-]* " | head -1 | sed 's/Logstash versions //') + echo "⚠️ WARNING: Blog does NOT contain ${LOGSTASH_LATEST} (found: ${BLOG_VERSION})" >&2 + echo " Update: site/content/english/blog/integration-of-manticore-with-logstash-filebeat/index.md" >&2 +fi + +echo "" +echo "✅ Documentation validation complete" +SCRIPT +––– output ––– +Checking Logstash version references in documentation... +=== Checking manual documentation === +✓ Checking /manual/english/Integration/Logstash.md +✅ Manual: versions 7.6-9.2 are supported +=== Checking website blog post === +✓ Fetching https://manticoresearch.com/blog/integration-of-manticore-with-logstash-filebeat/ +✅ Blog: contains 9.2 +✅ Documentation validation complete From bfbb10c15887d1d8edb601779897ab28f5a2666d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 19 Nov 2025 11:58:46 +0000 Subject: [PATCH 14/20] docs: Auto-translate documentation changes by PavelShilin89 --- .../Integration/Filebeat.md.json | 8 ++++++ .../Integration/Logstash.md.json | 8 ++++++ manual/chinese/Integration/Filebeat.md | 26 +++++++++---------- manual/chinese/Integration/Logstash.md | 14 +++++----- manual/russian/Integration/Filebeat.md | 26 +++++++++---------- manual/russian/Integration/Logstash.md | 12 ++++----- 6 files changed, 55 insertions(+), 39 deletions(-) diff --git a/.translation-cache/Integration/Filebeat.md.json b/.translation-cache/Integration/Filebeat.md.json index c57808cc47..d4222790f2 100644 --- a/.translation-cache/Integration/Filebeat.md.json +++ b/.translation-cache/Integration/Filebeat.md.json @@ -14,5 +14,13 @@ "russian": "# Интеграция с Filebeat\n\n> ПРИМЕЧАНИЕ: интеграция с Filebeat требует [Manticore Buddy](../Installation/Manticore_Buddy.md). Если она не работает, убедитесь, что Buddy установлен.\n\n[Filebeat](https://www.elastic.co/beats/filebeat) — это легковесный шиппер для пересылки и централизации логов. Установленный как агент, он отслеживает указанные вами файлы логов или директории, собирает события из логов и пересылает их для индексирования, обычно в Elasticsearch или Logstash.\n\nТеперь Manticore также поддерживает использование Filebeat как конвейера обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.17-9.2.\n\n## Конфигурация Filebeat\n\nКонфигурация варьируется в зависимости от версии Filebeat, которую вы используете.\n\n### Конфигурация для Filebeat 7.17, 8.0, 8.1\n\n> **Важно**: версии Filebeat 7.17.0, 8.0.0 и 8.1.0 имеют известную проблему с glibc 2.35+ (используется в Ubuntu 22.04 и новее). Эти версии могут аварийно завершать работу с ошибкой \"Fatal glibc error: rseq registration failed\". Чтобы исправить это, добавьте конфигурацию `seccomp`, как показано ниже.\n\nCODE_BLOCK_0\n\n**Ссылки**: [Issue #30576](https://github.com/elastic/beats/issues/30576), [PR #30620](https://github.com/elastic/beats/pull/30620)\n\n### Конфигурация для Filebeat 8.1 - 8.10\n\nДля версий с 8.1 по 8.10 необходимо добавить опцию `allow_older_versions`:\n\nCODE_BLOCK_1\n\n### Конфигурация для Filebeat 8.11 - 8.19\n\nНачиная с версии 8.11, сжатие вывода включено по умолчанию, поэтому для совместимости с Manticore необходимо явно задать `compression_level: 0`:\n\nCODE_BLOCK_2\n\n### Конфигурация для Filebeat 9.0+\n\nFilebeat 9.0 представляет крупные изменения в архитектуре, заменяя тип входа `log` на `filestream`. Начиная с версии 9.0, также изменился метод идентификации файлов по умолчанию на fingerprint, который требует, чтобы файлы были не менее 1024 байт ([см. issue #44780](https://github.com/elastic/beats/issues/44780)). Для совместимости с Manticore и файлами любого размера необходимо отключить fingerprint.\n\nНиже приведена требуемая конфигурация для Filebeat 9.0 и всех последующих версий:\n\nCODE_BLOCK_3\n\n**Важные заметки по Filebeat 9.0+:**\n\n- Вход `type: filestream` заменяет прежний `type: log`\n\n- Параметр `prospector.scanner.fingerprint.enabled: false` **обязателен** для отключения идентификации файлов по fingerprint, обеспечивая корректную обработку файлов размером меньше 1024 байт\n\n- Поле `id` требуется для filestream входов и должно быть уникальным\n\n## Результаты Filebeat\n\nЗапустив Filebeat с этой конфигурацией, лог-данные будут отправлены в Manticore и корректно проиндексированы. Ниже показана итоговая схема таблицы, созданной Manticore, и пример вставленного документа:\n\nCODE_BLOCK_4\n\nCODE_BLOCK_5" }, "is_code_or_comment": false + }, + "2c027831ac40cee81b357237e9e17b31589987c86c4f7cf76d5f3294d645367b": { + "original": "# Integration with Filebeat\n\n> NOTE: The integration with Filebeat requires [Manticore Buddy](../Installation/Manticore_Buddy.md). If it doesn't work, make sure Buddy is installed.\n\n[Filebeat](https://www.elastic.co/beats/filebeat) is a lightweight shipper for forwarding and centralizing log data. Once installed as an agent, it monitors the log files or locations you specify, collects log events, and forwards them for indexing, usually to Elasticsearch or Logstash.\n\nNow, Manticore also supports the use of Filebeat as processing pipelines. This allows the collected and transformed data to be sent to Manticore just like to Elasticsearch. Currently, versions 7.17-9.2 are supported.\n\n## Filebeat configuration\n\nConfiguration varies depending on which version of Filebeat you're using.\n\n### Configuration for Filebeat 7.17, 8.0, 8.1\n\n> **Important**: Filebeat versions 7.17.0, 8.0.0, and 8.1.0 have a known issue with glibc 2.35+ (used in Ubuntu 22.04 and newer distributions). These versions may crash with \"Fatal glibc error: rseq registration failed\". To fix this, add the `seccomp` configuration as shown below.\n\nCODE_BLOCK_0\n\n**References**: [Issue #30576](https://github.com/elastic/beats/issues/30576), [PR #30620](https://github.com/elastic/beats/pull/30620)\n\n### Configuration for Filebeat 8.1 - 8.10\n\nFor versions 8.1 through 8.10, you need to add the `allow_older_versions` option:\n\nCODE_BLOCK_1\n\n### Configuration for Filebeat 8.11 - 8.x\n\nFrom version 8.11, output compression is enabled by default, so you must explicitly set `compression_level: 0` for compatibility with Manticore:\n\nCODE_BLOCK_2\n\n### Configuration for Filebeat 9.0+\n\nFilebeat 9.0 introduces a major architecture change, replacing the `log` input type with `filestream`. Starting from version 9.0, the default file identification method also changed to fingerprint, which requires files to be at least 1024 bytes ([see issue #44780](https://github.com/elastic/beats/issues/44780)). For Manticore compatibility with files of any size, you must disable fingerprinting.\n\nHere's the required configuration for Filebeat 9.0 and all later versions:\n\nCODE_BLOCK_3\n\n**Important notes for Filebeat 9.0+:**\n\n- The `type: filestream` input replaces the older `type: log`\n\n- The `prospector.scanner.fingerprint.enabled: false` setting is **required** to disable fingerprint-based file identification, ensuring reliable processing of files smaller than 1024 bytes\n\n- The `id` field is required for filestream inputs and must be unique\n\n## Filebeat results\n\nOnce you run Filebeat with this configuration, log data will be sent to Manticore and properly indexed. Here is the resulting schema of the table created by Manticore and an example of the inserted document:\n\nCODE_BLOCK_4\n\nCODE_BLOCK_5", + "translations": { + "chinese": "# 与 Filebeat 的集成\n\n> 注意:与 Filebeat 的集成需要 [Manticore Buddy](../Installation/Manticore_Buddy.md)。如果无法正常工作,请确保已安装 Buddy。\n\n[Filebeat](https://www.elastic.co/beats/filebeat) 是一个轻量级的记录数据转发和集中工具。安装作为代理后,它会监控您指定的日志文件或位置,收集日志事件,并将其转发以供索引,通常是发送到 Elasticsearch 或 Logstash。\n\n现在,Manticore 也支持将 Filebeat 用作处理管道。这允许将收集和转换后的数据像发送到 Elasticsearch 一样发送到 Manticore。目前支持的版本为 7.17-9.2。\n\n## Filebeat 配置\n\n配置根据您使用的 Filebeat 版本而异。\n\n### Filebeat 7.17、8.0、8.1 的配置\n\n> **重要**:Filebeat 版本 7.17.0、8.0.0 和 8.1.0 在使用 glibc 2.35+(用于 Ubuntu 22.04 及更高版本的发行版)时存在已知问题。这些版本可能会因“Fatal glibc error: rseq registration failed”而崩溃。为解决此问题,请添加如下所示的 `seccomp` 配置。\n\nCODE_BLOCK_0\n\n**参考**:[Issue #30576](https://github.com/elastic/beats/issues/30576),[PR #30620](https://github.com/elastic/beats/pull/30620)\n\n### Filebeat 8.1 - 8.10 的配置\n\n对于 8.1 到 8.10 版本,需要添加 `allow_older_versions` 选项:\n\nCODE_BLOCK_1\n\n### Filebeat 8.11 - 8.x 的配置\n\n从 8.11 版本起,默认启用输出压缩,因此您必须显式设置 `compression_level: 0` 以保证与 Manticore 的兼容:\n\nCODE_BLOCK_2\n\n### Filebeat 9.0+ 的配置\n\nFilebeat 9.0 引入了重大架构更改,替换了 `log` 输入类型为 `filestream`。从 9.0 版本开始,默认的文件识别方法也更改为指纹识别,要求文件至少为 1024 字节([参见 issue #44780](https://github.com/elastic/beats/issues/44780))。为了使 Manticore 兼容任意大小的文件,您必须禁用指纹识别。\n\n以下是 Filebeat 9.0 及之后所有版本所需的配置:\n\nCODE_BLOCK_3\n\n**针对 Filebeat 9.0+ 的重要说明:**\n\n- `type: filestream` 输入替代了旧的 `type: log`\n\n- `prospector.scanner.fingerprint.enabled: false` 设置是**必须的**,用以禁用基于指纹的文件识别,确保对小于 1024 字节的文件可靠处理\n\n- filestream 输入要求有 `id` 字段,且必须唯一\n\n## Filebeat 结果\n\n一旦使用此配置启动 Filebeat,日志数据将被发送到 Manticore 并正确建立索引。以下是 Manticore 创建的表的结果模式及插入文档示例:\n\nCODE_BLOCK_4\n\nCODE_BLOCK_5", + "russian": "# Интеграция с Filebeat\n\n> ПРИМЕЧАНИЕ: Для интеграции с Filebeat требуется [Manticore Buddy](../Installation/Manticore_Buddy.md). Если интеграция не работает, убедитесь, что Buddy установлен.\n\n[Filebeat](https://www.elastic.co/beats/filebeat) — это лёгкий агент для пересылки и централизованного сбора логов. Установленный как агент, он отслеживает указанные вами лог-файлы или места, собирает события логов и пересылает их для индексирования, обычно в Elasticsearch или Logstash.\n\nТеперь Manticore также поддерживает использование Filebeat в качестве конвейеров обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.17-9.2.\n\n## Конфигурация Filebeat\n\nКонфигурация зависит от используемой вами версии Filebeat.\n\n### Конфигурация для Filebeat 7.17, 8.0, 8.1\n\n> **Важно**: В версиях Filebeat 7.17.0, 8.0.0 и 8.1.0 известна проблема с glibc 2.35+ (используется в Ubuntu 22.04 и новее). Эти версии могут аварийно завершать работу с ошибкой \"Fatal glibc error: rseq registration failed\". Чтобы исправить это, добавьте конфигурацию `seccomp`, как показано ниже.\n\nCODE_BLOCK_0\n\n**Ссылки**: [Issue #30576](https://github.com/elastic/beats/issues/30576), [PR #30620](https://github.com/elastic/beats/pull/30620)\n\n### Конфигурация для Filebeat 8.1 - 8.10\n\nДля версий с 8.1 по 8.10 необходимо добавить опцию `allow_older_versions`:\n\nCODE_BLOCK_1\n\n### Конфигурация для Filebeat 8.11 - 8.x\n\nНачиная с версии 8.11, сжатие вывода включено по умолчанию, поэтому для совместимости с Manticore нужно явно указать `compression_level: 0`:\n\nCODE_BLOCK_2\n\n### Конфигурация для Filebeat 9.0+\n\nFilebeat 9.0 вводит существенные архитектурные изменения, заменяя тип ввода `log` на `filestream`. Также с версии 9.0 изменён метод идентификации файлов по умолчанию на отпечаток (fingerprint), который требует, чтобы файлы были не менее 1024 байт ([см. issue #44780](https://github.com/elastic/beats/issues/44780)). Для совместимости с Manticore и обработки файлов любого размера необходимо отключить fingerprinting.\n\nВот требуемая конфигурация для Filebeat 9.0 и всех последующих версий:\n\nCODE_BLOCK_3\n\n**Важные замечания для Filebeat 9.0+:**\n\n- Ввод `type: filestream` заменяет устаревший `type: log`\n\n- Настройка `prospector.scanner.fingerprint.enabled: false` **обязательна** для отключения идентификации файлов по отпечатку, что обеспечивает корректную обработку файлов размером меньше 1024 байт\n\n- Поле `id` обязательно для `filestream` и должно быть уникальным\n\n## Результаты Filebeat\n\nПосле запуска Filebeat с данной конфигурацией лог-данные будут отправлены в Manticore и корректно индексированы. Ниже приведена итоговая схема таблицы, созданной Manticore, и пример вставленного документа:\n\nCODE_BLOCK_4\n\nCODE_BLOCK_5" + }, + "is_code_or_comment": false } } diff --git a/.translation-cache/Integration/Logstash.md.json b/.translation-cache/Integration/Logstash.md.json index 36fc3aa165..1a68ae185c 100644 --- a/.translation-cache/Integration/Logstash.md.json +++ b/.translation-cache/Integration/Logstash.md.json @@ -6,5 +6,13 @@ "russian": "# Интеграция с Logstash\n\n> ПРИМЕЧАНИЕ: Интеграция с Logstash требует [Manticore Buddy](../Installation/Manticore_Buddy.md). Если она не работает, убедитесь, что Buddy установлен.\n\n[Logstash](https://www.elastic.co/logstash) — это инструмент управления журналами, который собирает данные из различных источников, преобразует их на лету и отправляет в нужное место назначения. Он часто используется как конвейер данных для Elasticsearch, открытого аналитического и поискового движка.\n\nТеперь Manticore поддерживает использование Logstash в качестве конвейера обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.6+.\n\nРассмотрим простой пример конфигурационного файла Logstash, используемого для индексирования `dpkg.log`, стандартного файла журнала менеджера пакетов Debian. Сам журнал имеет простую структуру, как показано ниже:\n\nCODE_BLOCK_0\n\n## Конфигурация Logstash\n\nВот пример конфигурации Logstash:\n\nCODE_BLOCK_1\n\nОбратите внимание, что перед дальнейшими действиями необходимо учесть один важный момент: Manticore не поддерживает управление шаблонами журналов (Log Template Management) и управление жизненным циклом индексов (Index Lifecycle Management) в Elasticsearch. Поскольку эти функции по умолчанию включены в Logstash, их необходимо явно отключить в конфигурации. Кроме того, опция hosts в разделе output конфигурации должна соответствовать HTTP-порту прослушивания Manticore (по умолчанию localhost:9308).\n\n## Результаты Logstash\n\nПосле внесения описанных изменений в конфигурацию вы можете запустить Logstash, и данные из журнала dpkg будут переданы в Manticore и корректно проиндексированы.\n\nНиже приведена итоговая схема созданной таблицы и пример вставленного документа:\n\nCODE_BLOCK_2\n\nCODE_BLOCK_3" }, "is_code_or_comment": false + }, + "6e80a8a92ad9d2193ea09e8fd7f3fda4f2d871a69616340e07fb565c388c053a": { + "original": "# Integration with Logstash\n\n> NOTE: The integration with Logstash requires [Manticore Buddy](../Installation/Manticore_Buddy.md). If it doesn't work, make sure Buddy is installed.\n\n[Logstash](https://www.elastic.co/logstash) is a log management tool that collects data from a variety of sources, transforms it on the fly, and sends it to your desired destination. It is often used as a data pipeline for Elasticsearch, an open-source analytics and search engine.\n\nNow, Manticore supports the use of Logstash as a processing pipeline. This allows the collected and transformed data to be sent to Manticore just like to Elasticsearch. Currently, versions 7.6-9.2 are supported.\n\nLet’s examine a simple example of a Logstash config file used for indexing `dpkg.log`, a standard log file of the Debian package manager. The log itself has a simple structure, as shown below:\n\nCODE_BLOCK_0\n\n## Logstash configuration\n\nHere is an example Logstash configuration:\n\nCODE_BLOCK_1\n\nNote that, before proceeding further, one crucial caveat needs to be addressed: Manticore does not support Log Template Management and the Index Lifecycle Management features of Elasticsearch. As these features are enabled by default in Logstash, they need to be explicitly disabled in the config. Additionally, the hosts option in the output config section must correspond to Manticore’s HTTP listen port (default is localhost:9308).\n\n## Logstash results\n\nAfter adjusting the config as described, you can run Logstash, and the data from the dpkg log will be passed to Manticore and properly indexed.\n\nHere is the resulting schema of the created table and an example of the inserted document:\n\nCODE_BLOCK_2\n\nCODE_BLOCK_3", + "translations": { + "chinese": "# 与 Logstash 的集成\n\n> 注意:与 Logstash 的集成需要 [Manticore Buddy](../Installation/Manticore_Buddy.md)。如果无法正常工作,请确保已安装 Buddy。\n\n[Logstash](https://www.elastic.co/logstash) 是一个日志管理工具,能够从各种来源收集数据,实时转换数据,并将其发送到所需的目的地。它通常被用作 Elasticsearch(一个开源的分析和搜索引擎)数据管道。\n\n现在,Manticore 支持使用 Logstash 作为处理管道。这允许将收集和转换的数据发送到 Manticore,就像发送到 Elasticsearch 一样。目前支持的版本为 7.6-9.2。\n\n让我们来看一个用于索引 `dpkg.log` 的简单 Logstash 配置文件示例,`dpkg.log` 是 Debian 软件包管理器的标准日志文件。该日志本身结构简单,如下所示:\n\nCODE_BLOCK_0\n\n## Logstash 配置\n\n这是一个 Logstash 配置示例:\n\nCODE_BLOCK_1\n\n请注意,在进一步操作之前,有一个关键的注意事项需要说明:Manticore 不支持 Elasticsearch 的日志模板管理和索引生命周期管理功能。由于这些功能在 Logstash 中默认启用,因此需要在配置中显式禁用它们。另外,输出配置部分的 hosts 选项必须对应 Manticore 的 HTTP 监听端口(默认是 localhost:9308)。\n\n## Logstash 结果\n\n按照上述方式调整配置后,你可以运行 Logstash,dpkg 日志中的数据将被传递到 Manticore 并正确建立索引。\n\n以下是创建表的结果模式和插入文档的示例:\n\nCODE_BLOCK_2\n\nCODE_BLOCK_3", + "russian": "# Интеграция с Logstash\n\n> ПРИМЕЧАНИЕ: Интеграция с Logstash требует [Manticore Buddy](../Installation/Manticore_Buddy.md). Если она не работает, убедитесь, что Buddy установлен.\n\n[Logstash](https://www.elastic.co/logstash) — это инструмент управления журналами, который собирает данные из различных источников, преобразует их на лету и отправляет в нужное место назначения. Он часто используется как конвейер данных для Elasticsearch — открытого аналитического и поискового движка.\n\nТеперь Manticore поддерживает использование Logstash в качестве конвейера обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.6-9.2.\n\nРассмотрим простой пример конфигурационного файла Logstash, используемого для индексирования `dpkg.log` — стандартного файла журнала менеджера пакетов Debian. Сам журнал имеет простую структуру, как показано ниже:\n\nCODE_BLOCK_0\n\n## Конфигурация Logstash\n\nВот пример конфигурации Logstash:\n\nCODE_BLOCK_1\n\nОбратите внимание, что прежде чем продолжать, необходимо учесть один важный момент: Manticore не поддерживает функции управления шаблонами индексов (Log Template Management) и управления жизненным циклом индексов (Index Lifecycle Management) в Elasticsearch. Поскольку эти функции по умолчанию включены в Logstash, их необходимо явно отключить в конфигурации. Кроме того, опция hosts в разделе output конфигурации должна соответствовать HTTP-порту прослушивания Manticore (по умолчанию localhost:9308).\n\n## Результаты Logstash\n\nПосле корректировки конфигурации, как описано выше, вы можете запустить Logstash, и данные из журнала dpkg будут переданы в Manticore и корректно проиндексированы.\n\nВот итоговая схема созданной таблицы и пример вставленного документа:\n\nCODE_BLOCK_2\n\nCODE_BLOCK_3" + }, + "is_code_or_comment": false } } diff --git a/manual/chinese/Integration/Filebeat.md b/manual/chinese/Integration/Filebeat.md index 7096244366..54995fd8e2 100644 --- a/manual/chinese/Integration/Filebeat.md +++ b/manual/chinese/Integration/Filebeat.md @@ -1,18 +1,18 @@ -# 与 Filebeat 集成 +# 与 Filebeat 的集成 > 注意:与 Filebeat 的集成需要 [Manticore Buddy](../Installation/Manticore_Buddy.md)。如果无法正常工作,请确保已安装 Buddy。 -[Filebeat](https://www.elastic.co/beats/filebeat) 是一个轻量级的日志发送器,用于转发和集中日志数据。安装为代理后,它会监视你指定的日志文件或位置,收集日志事件,并将其转发以进行索引,通常是发送到 Elasticsearch 或 Logstash。 +[Filebeat](https://www.elastic.co/beats/filebeat) 是一个轻量级的记录数据转发和集中工具。安装作为代理后,它会监控您指定的日志文件或位置,收集日志事件,并将其转发以供索引,通常是发送到 Elasticsearch 或 Logstash。 -现在,Manticore 也支持将 Filebeat 用作处理管道。这允许将收集并转换的数据发送到 Manticore,就像发送到 Elasticsearch 一样。目前支持版本为 7.17-9.2。 +现在,Manticore 也支持将 Filebeat 用作处理管道。这允许将收集和转换后的数据像发送到 Elasticsearch 一样发送到 Manticore。目前支持的版本为 7.17-9.2。 ## Filebeat 配置 -配置因你使用的 Filebeat 版本而异。 +配置根据您使用的 Filebeat 版本而异。 ### Filebeat 7.17、8.0、8.1 的配置 -> **重要**:Filebeat 版本 7.17.0、8.0.0 和 8.1.0 在 glibc 2.35+(Ubuntu 22.04 和更高版本使用)中存在已知问题。这些版本可能会因“Fatal glibc error: rseq registration failed”而崩溃。解决方法是添加如下所示的 `seccomp` 配置。 +> **重要**:Filebeat 版本 7.17.0、8.0.0 和 8.1.0 在使用 glibc 2.35+(用于 Ubuntu 22.04 及更高版本的发行版)时存在已知问题。这些版本可能会因“Fatal glibc error: rseq registration failed”而崩溃。为解决此问题,请添加如下所示的 `seccomp` 配置。 ```yaml filebeat.inputs: @@ -43,7 +43,7 @@ setup.template.name: "dpkg_log" setup.template.pattern: "dpkg_log" ``` -**参考**:[Issue #30576](https://github.com/elastic/beats/issues/30576), [PR #30620](https://github.com/elastic/beats/pull/30620) +**参考**:[Issue #30576](https://github.com/elastic/beats/issues/30576),[PR #30620](https://github.com/elastic/beats/pull/30620) ### Filebeat 8.1 - 8.10 的配置 @@ -73,7 +73,7 @@ setup.template.pattern: "dpkg_log" ### Filebeat 8.11 - 8.x 的配置 -从 8.11 版本开始,输出压缩默认启用,因此必须显式设置 `compression_level: 0` 以兼容 Manticore: +从 8.11 版本起,默认启用输出压缩,因此您必须显式设置 `compression_level: 0` 以保证与 Manticore 的兼容: ``` filebeat.inputs: @@ -98,9 +98,9 @@ setup.template.pattern: "dpkg_log" ### Filebeat 9.0+ 的配置 -Filebeat 9.0 引入了重大架构变更,用 `filestream` 替代原有的 `log` 输入类型。从 9.0 版本起,默认文件识别方式改为指纹识别,要求文件至少为 1024 字节([详见 issue #44780](https://github.com/elastic/beats/issues/44780))。为了让 Manticore 兼容任何大小的文件,必须禁用指纹识别。 +Filebeat 9.0 引入了重大架构更改,替换了 `log` 输入类型为 `filestream`。从 9.0 版本开始,默认的文件识别方法也更改为指纹识别,要求文件至少为 1024 字节([参见 issue #44780](https://github.com/elastic/beats/issues/44780))。为了使 Manticore 兼容任意大小的文件,您必须禁用指纹识别。 -以下是 Filebeat 9.0 及其后所有版本所需配置: +以下是 Filebeat 9.0 及之后所有版本所需的配置: ``` filebeat.inputs: @@ -124,14 +124,14 @@ setup.template.name: "dpkg_log" setup.template.pattern: "dpkg_log" ``` -**Filebeat 9.0+ 重要注意事项:** +**针对 Filebeat 9.0+ 的重要说明:** - `type: filestream` 输入替代了旧的 `type: log` -- 必须设置 `prospector.scanner.fingerprint.enabled: false` 来禁用基于指纹的文件识别,确保能正确处理小于 1024 字节的文件 -- filestream 输入需要 `id` 字段,并且该字段必须唯一 +- `prospector.scanner.fingerprint.enabled: false` 设置是**必须的**,用以禁用基于指纹的文件识别,确保对小于 1024 字节的文件可靠处理 +- filestream 输入要求有 `id` 字段,且必须唯一 ## Filebeat 结果 -使用此配置运行 Filebeat 后,日志数据将发送到 Manticore 并正确索引。下面是 Manticore 创建的表的结果模式以及插入文档的示例: +一旦使用此配置启动 Filebeat,日志数据将被发送到 Manticore 并正确建立索引。以下是 Manticore 创建的表的结果模式及插入文档示例: ``` mysql> DESCRIBE dpkg_log; diff --git a/manual/chinese/Integration/Logstash.md b/manual/chinese/Integration/Logstash.md index d6aae76f6f..c541a6c40f 100644 --- a/manual/chinese/Integration/Logstash.md +++ b/manual/chinese/Integration/Logstash.md @@ -2,11 +2,11 @@ > 注意:与 Logstash 的集成需要 [Manticore Buddy](../Installation/Manticore_Buddy.md)。如果无法正常工作,请确保已安装 Buddy。 -[Logstash](https://www.elastic.co/logstash) 是一个日志管理工具,可以从各种来源收集数据,实时转换数据,并将其发送到您期望的目标。它通常用作 Elasticsearch(一个开源的分析和搜索引擎)的数据管道。 +[Logstash](https://www.elastic.co/logstash) 是一个日志管理工具,能够从各种来源收集数据,实时转换数据,并将其发送到所需的目的地。它通常被用作 Elasticsearch(一个开源的分析和搜索引擎)数据管道。 -现在,Manticore 支持将 Logstash 用作处理管道。这允许收集和转换后的数据像发送到 Elasticsearch 一样发送到 Manticore。目前支持版本为 7.6 及以上。 +现在,Manticore 支持使用 Logstash 作为处理管道。这允许将收集和转换的数据发送到 Manticore,就像发送到 Elasticsearch 一样。目前支持的版本为 7.6-9.2。 -让我们来看一个用于索引 `dpkg.log` 的简单 Logstash 配置文件示例,`dpkg.log` 是 Debian 包管理器的标准日志文件。该日志本身结构简单,如下所示: +让我们来看一个用于索引 `dpkg.log` 的简单 Logstash 配置文件示例,`dpkg.log` 是 Debian 软件包管理器的标准日志文件。该日志本身结构简单,如下所示: ``` 2023-05-31 10:42:55 status triggers-awaited ca-certificates-java:all 20190405ubuntu1.1 @@ -18,7 +18,7 @@ ## Logstash 配置 -以下是一个 Logstash 配置示例: +这是一个 Logstash 配置示例: ``` input { @@ -43,13 +43,13 @@ output { } ``` -请注意,在继续之前,需要解决一个关键问题:Manticore 不支持 Elasticsearch 的日志模板管理和索引生命周期管理功能。由于这些功能在 Logstash 中默认启用,因此需要在配置中显式禁用它们。此外,输出配置部分的 hosts 选项必须对应 Manticore 的 HTTP 监听端口(默认是 localhost:9308)。 +请注意,在进一步操作之前,有一个关键的注意事项需要说明:Manticore 不支持 Elasticsearch 的日志模板管理和索引生命周期管理功能。由于这些功能在 Logstash 中默认启用,因此需要在配置中显式禁用它们。另外,输出配置部分的 hosts 选项必须对应 Manticore 的 HTTP 监听端口(默认是 localhost:9308)。 ## Logstash 结果 -按照上述描述调整配置后,您可以运行 Logstash,dpkg 日志中的数据将传递给 Manticore 并正确索引。 +按照上述方式调整配置后,你可以运行 Logstash,dpkg 日志中的数据将被传递到 Manticore 并正确建立索引。 -以下是创建的表的结果模式和插入文档的示例: +以下是创建表的结果模式和插入文档的示例: ``` mysql> DESCRIBE dpkg_log; diff --git a/manual/russian/Integration/Filebeat.md b/manual/russian/Integration/Filebeat.md index 033dec5a42..52f8394448 100644 --- a/manual/russian/Integration/Filebeat.md +++ b/manual/russian/Integration/Filebeat.md @@ -1,18 +1,18 @@ # Интеграция с Filebeat -> ПРИМЕЧАНИЕ: интеграция с Filebeat требует [Manticore Buddy](../Installation/Manticore_Buddy.md). Если она не работает, убедитесь, что Buddy установлен. +> ПРИМЕЧАНИЕ: Для интеграции с Filebeat требуется [Manticore Buddy](../Installation/Manticore_Buddy.md). Если интеграция не работает, убедитесь, что Buddy установлен. -[Filebeat](https://www.elastic.co/beats/filebeat) — это легковесный шиппер для пересылки и централизации логов. Установленный как агент, он отслеживает указанные вами файлы логов или директории, собирает события из логов и пересылает их для индексирования, обычно в Elasticsearch или Logstash. +[Filebeat](https://www.elastic.co/beats/filebeat) — это лёгкий агент для пересылки и централизованного сбора логов. Установленный как агент, он отслеживает указанные вами лог-файлы или места, собирает события логов и пересылает их для индексирования, обычно в Elasticsearch или Logstash. -Теперь Manticore также поддерживает использование Filebeat как конвейера обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.17-9.2. +Теперь Manticore также поддерживает использование Filebeat в качестве конвейеров обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.17-9.2. ## Конфигурация Filebeat -Конфигурация варьируется в зависимости от версии Filebeat, которую вы используете. +Конфигурация зависит от используемой вами версии Filebeat. ### Конфигурация для Filebeat 7.17, 8.0, 8.1 -> **Важно**: версии Filebeat 7.17.0, 8.0.0 и 8.1.0 имеют известную проблему с glibc 2.35+ (используется в Ubuntu 22.04 и новее). Эти версии могут аварийно завершать работу с ошибкой "Fatal glibc error: rseq registration failed". Чтобы исправить это, добавьте конфигурацию `seccomp`, как показано ниже. +> **Важно**: В версиях Filebeat 7.17.0, 8.0.0 и 8.1.0 известна проблема с glibc 2.35+ (используется в Ubuntu 22.04 и новее). Эти версии могут аварийно завершать работу с ошибкой "Fatal glibc error: rseq registration failed". Чтобы исправить это, добавьте конфигурацию `seccomp`, как показано ниже. ```yaml filebeat.inputs: @@ -73,7 +73,7 @@ setup.template.pattern: "dpkg_log" ### Конфигурация для Filebeat 8.11 - 8.x -Начиная с версии 8.11, сжатие вывода включено по умолчанию, поэтому для совместимости с Manticore необходимо явно задать `compression_level: 0`: +Начиная с версии 8.11, сжатие вывода включено по умолчанию, поэтому для совместимости с Manticore нужно явно указать `compression_level: 0`: ``` filebeat.inputs: @@ -98,9 +98,9 @@ setup.template.pattern: "dpkg_log" ### Конфигурация для Filebeat 9.0+ -Filebeat 9.0 представляет крупные изменения в архитектуре, заменяя тип входа `log` на `filestream`. Начиная с версии 9.0, также изменился метод идентификации файлов по умолчанию на fingerprint, который требует, чтобы файлы были не менее 1024 байт ([см. issue #44780](https://github.com/elastic/beats/issues/44780)). Для совместимости с Manticore и файлами любого размера необходимо отключить fingerprint. +Filebeat 9.0 вводит существенные архитектурные изменения, заменяя тип ввода `log` на `filestream`. Также с версии 9.0 изменён метод идентификации файлов по умолчанию на отпечаток (fingerprint), который требует, чтобы файлы были не менее 1024 байт ([см. issue #44780](https://github.com/elastic/beats/issues/44780)). Для совместимости с Manticore и обработки файлов любого размера необходимо отключить fingerprinting. -Ниже приведена требуемая конфигурация для Filebeat 9.0 и всех последующих версий: +Вот требуемая конфигурация для Filebeat 9.0 и всех последующих версий: ``` filebeat.inputs: @@ -124,14 +124,14 @@ setup.template.name: "dpkg_log" setup.template.pattern: "dpkg_log" ``` -**Важные заметки по Filebeat 9.0+:** -- Вход `type: filestream` заменяет прежний `type: log` -- Параметр `prospector.scanner.fingerprint.enabled: false` **обязателен** для отключения идентификации файлов по fingerprint, обеспечивая корректную обработку файлов размером меньше 1024 байт -- Поле `id` требуется для filestream входов и должно быть уникальным +**Важные замечания для Filebeat 9.0+:** +- Ввод `type: filestream` заменяет устаревший `type: log` +- Настройка `prospector.scanner.fingerprint.enabled: false` **обязательна** для отключения идентификации файлов по отпечатку, что обеспечивает корректную обработку файлов размером меньше 1024 байт +- Поле `id` обязательно для `filestream` и должно быть уникальным ## Результаты Filebeat -Запустив Filebeat с этой конфигурацией, лог-данные будут отправлены в Manticore и корректно проиндексированы. Ниже показана итоговая схема таблицы, созданной Manticore, и пример вставленного документа: +После запуска Filebeat с данной конфигурацией лог-данные будут отправлены в Manticore и корректно индексированы. Ниже приведена итоговая схема таблицы, созданной Manticore, и пример вставленного документа: ``` mysql> DESCRIBE dpkg_log; diff --git a/manual/russian/Integration/Logstash.md b/manual/russian/Integration/Logstash.md index e05b85e536..c8979c2cdb 100644 --- a/manual/russian/Integration/Logstash.md +++ b/manual/russian/Integration/Logstash.md @@ -2,11 +2,11 @@ > ПРИМЕЧАНИЕ: Интеграция с Logstash требует [Manticore Buddy](../Installation/Manticore_Buddy.md). Если она не работает, убедитесь, что Buddy установлен. -[Logstash](https://www.elastic.co/logstash) — это инструмент управления журналами, который собирает данные из различных источников, преобразует их на лету и отправляет в нужное место назначения. Он часто используется как конвейер данных для Elasticsearch, открытого аналитического и поискового движка. +[Logstash](https://www.elastic.co/logstash) — это инструмент управления журналами, который собирает данные из различных источников, преобразует их на лету и отправляет в нужное место назначения. Он часто используется как конвейер данных для Elasticsearch — открытого аналитического и поискового движка. -Теперь Manticore поддерживает использование Logstash в качестве конвейера обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.6+. +Теперь Manticore поддерживает использование Logstash в качестве конвейера обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.6-9.2. -Рассмотрим простой пример конфигурационного файла Logstash, используемого для индексирования `dpkg.log`, стандартного файла журнала менеджера пакетов Debian. Сам журнал имеет простую структуру, как показано ниже: +Рассмотрим простой пример конфигурационного файла Logstash, используемого для индексирования `dpkg.log` — стандартного файла журнала менеджера пакетов Debian. Сам журнал имеет простую структуру, как показано ниже: ``` 2023-05-31 10:42:55 status triggers-awaited ca-certificates-java:all 20190405ubuntu1.1 @@ -43,13 +43,13 @@ output { } ``` -Обратите внимание, что перед дальнейшими действиями необходимо учесть один важный момент: Manticore не поддерживает управление шаблонами журналов (Log Template Management) и управление жизненным циклом индексов (Index Lifecycle Management) в Elasticsearch. Поскольку эти функции по умолчанию включены в Logstash, их необходимо явно отключить в конфигурации. Кроме того, опция hosts в разделе output конфигурации должна соответствовать HTTP-порту прослушивания Manticore (по умолчанию localhost:9308). +Обратите внимание, что прежде чем продолжать, необходимо учесть один важный момент: Manticore не поддерживает функции управления шаблонами индексов (Log Template Management) и управления жизненным циклом индексов (Index Lifecycle Management) в Elasticsearch. Поскольку эти функции по умолчанию включены в Logstash, их необходимо явно отключить в конфигурации. Кроме того, опция hosts в разделе output конфигурации должна соответствовать HTTP-порту прослушивания Manticore (по умолчанию localhost:9308). ## Результаты Logstash -После внесения описанных изменений в конфигурацию вы можете запустить Logstash, и данные из журнала dpkg будут переданы в Manticore и корректно проиндексированы. +После корректировки конфигурации, как описано выше, вы можете запустить Logstash, и данные из журнала dpkg будут переданы в Manticore и корректно проиндексированы. -Ниже приведена итоговая схема созданной таблицы и пример вставленного документа: +Вот итоговая схема созданной таблицы и пример вставленного документа: ``` mysql> DESCRIBE dpkg_log; From 888448a9b273afadf9a2afdff9d0193b62be73cb Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Mon, 24 Nov 2025 09:10:36 +0100 Subject: [PATCH 15/20] docs: update Filebeat version range from "8.x" to "8.19" in documentation --- manual/english/Integration/Filebeat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/manual/english/Integration/Filebeat.md b/manual/english/Integration/Filebeat.md index d77c2b2ab9..775d4447cb 100644 --- a/manual/english/Integration/Filebeat.md +++ b/manual/english/Integration/Filebeat.md @@ -71,7 +71,7 @@ setup.template.name: "dpkg_log" setup.template.pattern: "dpkg_log" ``` -### Configuration for Filebeat 8.11 - 8.x +### Configuration for Filebeat 8.11 - 8.19 From version 8.11, output compression is enabled by default, so you must explicitly set `compression_level: 0` for compatibility with Manticore: From a36d2a0373d06d1bb1b2a9b60f7fafab5b1ec16a Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Mon, 24 Nov 2025 22:17:30 +0100 Subject: [PATCH 16/20] Added detailed configuration instructions for different Logstash versions (7.17, 8.0-9.1, 9.2+) with complete ready-to-use configuration examples. Each section explains version-specific requirements. --- manual/english/Integration/Logstash.md | 106 +++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/manual/english/Integration/Logstash.md b/manual/english/Integration/Logstash.md index 5808791527..57ce2de91b 100755 --- a/manual/english/Integration/Logstash.md +++ b/manual/english/Integration/Logstash.md @@ -45,6 +45,112 @@ output { Note that, before proceeding further, one crucial caveat needs to be addressed: Manticore does not support Log Template Management and the Index Lifecycle Management features of Elasticsearch. As these features are enabled by default in Logstash, they need to be explicitly disabled in the config. Additionally, the hosts option in the output config section must correspond to Manticore’s HTTP listen port (default is localhost:9308). +## Version-specific configuration + +Configuration varies depending on which version of Logstash you're using. + +### Configuration for Logstash 7.17 + +For Logstash 7.17, the basic configuration is straightforward and doesn't require additional ILM settings: + +``` +input { + file { + path => ["/var/log/dpkg.log"] + start_position => "beginning" + sincedb_path => "/dev/null" + mode => "read" + exit_after_read => "true" + file_completed_action => "log" + file_completed_log_path => "/dev/null" + } +} + +output { + elasticsearch { + index => "dpkg_log" + hosts => ["http://localhost:9308"] + } +} +``` + +Run with: +```bash +logstash -f logstash.conf +``` + +### Configuration for Logstash 8.0 - 9.1 + +Starting from version 8.0, ILM (Index Lifecycle Management) and template management are enabled by default and must be explicitly disabled for compatibility with Manticore: + +``` +input { + file { + path => ["/var/log/dpkg.log"] + start_position => "beginning" + sincedb_path => "/dev/null" + mode => "read" + exit_after_read => "true" + file_completed_action => "log" + file_completed_log_path => "/dev/null" + } +} + +output { + elasticsearch { + index => "dpkg_log" + hosts => ["http://localhost:9308"] + ilm_enabled => false + manage_template => false + } +} +``` + +For versions 9.0 and 9.1, Logstash requires running as a superuser. Set the environment variable before starting: + +```bash +export ALLOW_SUPERUSER=1 +logstash -f logstash.conf +``` + +### Configuration for Logstash 9.2+ + +From version 9.2, the recommended approach is to configure the superuser setting via a configuration file instead of using environment variables. This provides a more permanent and manageable solution. + +Configuration file (e.g., `logstash.conf`): +``` +input { + file { + path => ["/var/log/dpkg.log"] + start_position => "beginning" + sincedb_path => "/dev/null" + mode => "read" + exit_after_read => "true" + file_completed_action => "log" + file_completed_log_path => "/dev/null" + } +} + +output { + elasticsearch { + index => "dpkg_log" + hosts => ["http://localhost:9308"] + ilm_enabled => false + manage_template => false + } +} +``` + +Create `/etc/logstash/logstash.yml`: +```yaml +allow_superuser: true +``` + +Run with: +```bash +logstash --path.settings=/etc/logstash -f logstash.conf +``` + ## Logstash results After adjusting the config as described, you can run Logstash, and the data from the dpkg log will be passed to Manticore and properly indexed. From a168d78fd358bd5b80db3f4f3ba8d84418814937 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 24 Nov 2025 21:18:52 +0000 Subject: [PATCH 17/20] docs: Auto-translate documentation changes by PavelShilin89 --- .../Integration/Logstash.md.json | 8 ++ manual/chinese/Integration/Logstash.md | 122 ++++++++++++++++-- manual/russian/Integration/Logstash.md | 118 ++++++++++++++++- 3 files changed, 234 insertions(+), 14 deletions(-) diff --git a/.translation-cache/Integration/Logstash.md.json b/.translation-cache/Integration/Logstash.md.json index 1a68ae185c..b7953b2125 100644 --- a/.translation-cache/Integration/Logstash.md.json +++ b/.translation-cache/Integration/Logstash.md.json @@ -14,5 +14,13 @@ "russian": "# Интеграция с Logstash\n\n> ПРИМЕЧАНИЕ: Интеграция с Logstash требует [Manticore Buddy](../Installation/Manticore_Buddy.md). Если она не работает, убедитесь, что Buddy установлен.\n\n[Logstash](https://www.elastic.co/logstash) — это инструмент управления журналами, который собирает данные из различных источников, преобразует их на лету и отправляет в нужное место назначения. Он часто используется как конвейер данных для Elasticsearch — открытого аналитического и поискового движка.\n\nТеперь Manticore поддерживает использование Logstash в качестве конвейера обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.6-9.2.\n\nРассмотрим простой пример конфигурационного файла Logstash, используемого для индексирования `dpkg.log` — стандартного файла журнала менеджера пакетов Debian. Сам журнал имеет простую структуру, как показано ниже:\n\nCODE_BLOCK_0\n\n## Конфигурация Logstash\n\nВот пример конфигурации Logstash:\n\nCODE_BLOCK_1\n\nОбратите внимание, что прежде чем продолжать, необходимо учесть один важный момент: Manticore не поддерживает функции управления шаблонами индексов (Log Template Management) и управления жизненным циклом индексов (Index Lifecycle Management) в Elasticsearch. Поскольку эти функции по умолчанию включены в Logstash, их необходимо явно отключить в конфигурации. Кроме того, опция hosts в разделе output конфигурации должна соответствовать HTTP-порту прослушивания Manticore (по умолчанию localhost:9308).\n\n## Результаты Logstash\n\nПосле корректировки конфигурации, как описано выше, вы можете запустить Logstash, и данные из журнала dpkg будут переданы в Manticore и корректно проиндексированы.\n\nВот итоговая схема созданной таблицы и пример вставленного документа:\n\nCODE_BLOCK_2\n\nCODE_BLOCK_3" }, "is_code_or_comment": false + }, + "db28f1526a8e5c5f2864f1b52407660f08281235ce433e61f9d4fe9fdb9340b0": { + "original": "# Integration with Logstash\n\n> NOTE: The integration with Logstash requires [Manticore Buddy](../Installation/Manticore_Buddy.md). If it doesn't work, make sure Buddy is installed.\n\n[Logstash](https://www.elastic.co/logstash) is a log management tool that collects data from a variety of sources, transforms it on the fly, and sends it to your desired destination. It is often used as a data pipeline for Elasticsearch, an open-source analytics and search engine.\n\nNow, Manticore supports the use of Logstash as a processing pipeline. This allows the collected and transformed data to be sent to Manticore just like to Elasticsearch. Currently, versions 7.6-9.2 are supported.\n\nLet’s examine a simple example of a Logstash config file used for indexing `dpkg.log`, a standard log file of the Debian package manager. The log itself has a simple structure, as shown below:\n\nCODE_BLOCK_0\n\n## Logstash configuration\n\nHere is an example Logstash configuration:\n\nCODE_BLOCK_1\n\nNote that, before proceeding further, one crucial caveat needs to be addressed: Manticore does not support Log Template Management and the Index Lifecycle Management features of Elasticsearch. As these features are enabled by default in Logstash, they need to be explicitly disabled in the config. Additionally, the hosts option in the output config section must correspond to Manticore’s HTTP listen port (default is localhost:9308).\n\n## Version-specific configuration\n\nConfiguration varies depending on which version of Logstash you're using.\n\n### Configuration for Logstash 7.17\n\nFor Logstash 7.17, the basic configuration is straightforward and doesn't require additional ILM settings:\n\nCODE_BLOCK_2\n\nRun with:\n\nCODE_BLOCK_3\n\n### Configuration for Logstash 8.0 - 9.1\n\nStarting from version 8.0, ILM (Index Lifecycle Management) and template management are enabled by default and must be explicitly disabled for compatibility with Manticore:\n\nCODE_BLOCK_4\n\nFor versions 9.0 and 9.1, Logstash requires running as a superuser. Set the environment variable before starting:\n\nCODE_BLOCK_5\n\n### Configuration for Logstash 9.2+\n\nFrom version 9.2, the recommended approach is to configure the superuser setting via a configuration file instead of using environment variables. This provides a more permanent and manageable solution.\n\nConfiguration file (e.g., `logstash.conf`):\n\nCODE_BLOCK_6\n\nCreate `/etc/logstash/logstash.yml`:\n\nCODE_BLOCK_7\n\nRun with:\n\nCODE_BLOCK_8\n\n## Logstash results\n\nAfter adjusting the config as described, you can run Logstash, and the data from the dpkg log will be passed to Manticore and properly indexed.\n\nHere is the resulting schema of the created table and an example of the inserted document:\n\nCODE_BLOCK_9\n\nCODE_BLOCK_10", + "translations": { + "chinese": "# 与 Logstash 的集成\n\n> 注意:与 Logstash 的集成需要 [Manticore Buddy](../Installation/Manticore_Buddy.md)。如果集成不工作,请确保 Buddy 已安装。\n\n[Logstash](https://www.elastic.co/logstash) 是一种日志管理工具,它从各种来源收集数据,实时转换数据,并发送到您想要的目标。它通常用作 Elasticsearch(一个开源分析和搜索引擎)的数据管道。\n\n现在,Manticore 支持使用 Logstash 作为处理管道。这允许收集和转换后的数据像发送给 Elasticsearch 一样发送给 Manticore。目前,支持的版本是 7.6 到 9.2。\n\n让我们来看看一个用于索引 `dpkg.log` 的简单 Logstash 配置文件示例,`dpkg.log` 是 Debian 包管理器的标准日志文件。该日志本身结构简单,如下所示:\n\nCODE_BLOCK_0\n\n## Logstash 配置\n\n下面是一个 Logstash 配置示例:\n\nCODE_BLOCK_1\n\n请注意,在继续之前,需要强调一个关键注意事项:Manticore 不支持 Elasticsearch 的日志模板管理和索引生命周期管理功能。由于这些功能在 Logstash 中默认启用,必须在配置中显式禁用它们。此外,output 配置段中的 hosts 选项必须对应 Manticore 的 HTTP 监听端口(默认是 localhost:9308)。\n\n## 针对不同版本的配置\n\n配置根据您使用的 Logstash 版本而有所不同。\n\n### Logstash 7.17 的配置\n\n对于 Logstash 7.17,基本配置相当简单,不需要额外的 ILM 设置:\n\nCODE_BLOCK_2\n\n运行命令:\n\nCODE_BLOCK_3\n\n### Logstash 8.0 - 9.1 的配置\n\n从 8.0 版本开始,ILM(索引生命周期管理)和模板管理默认启用,必须显式禁用以兼容 Manticore:\n\nCODE_BLOCK_4\n\n对于 9.0 和 9.1 版本,Logstash 需要以超级用户身份运行。在启动前设置环境变量:\n\nCODE_BLOCK_5\n\n### Logstash 9.2+ 的配置\n\n从 9.2 版本开始,推荐通过配置文件来配置超级用户设置,而不是使用环境变量,提供了更持久和便于管理的方案。\n\n配置文件(例如 `logstash.conf`):\n\nCODE_BLOCK_6\n\n创建 `/etc/logstash/logstash.yml`:\n\nCODE_BLOCK_7\n\n运行命令:\n\nCODE_BLOCK_8\n\n## Logstash 结果\n\n按照上述方式调整配置后,您可以运行 Logstash,dpkg 日志中的数据将传递给 Manticore 并正确索引。\n\n下面是创建的表的结果模式以及插入文档的示例:\n\nCODE_BLOCK_9\n\nCODE_BLOCK_10", + "russian": "# Интеграция с Logstash\n\n> ПРИМЕЧАНИЕ: Интеграция с Logstash требует [Manticore Buddy](../Installation/Manticore_Buddy.md). Если она не работает, убедитесь, что Buddy установлен.\n\n[Logstash](https://www.elastic.co/logstash) — это инструмент управления журналами, который собирает данные из разных источников, преобразует их на лету и отправляет в желаемое место назначения. Часто используется как конвейер данных для Elasticsearch, открытого движка аналитики и поиска.\n\nТеперь Manticore поддерживает использование Logstash в качестве конвейера обработки. Это позволяет передавать собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.6-9.2.\n\nРассмотрим простой пример файла конфигурации Logstash, используемого для индексирования `dpkg.log`, стандартного журнала менеджера пакетов Debian. Сам журнал имеет простую структуру, как показано ниже:\n\nCODE_BLOCK_0\n\n## Конфигурация Logstash\n\nВот пример конфигурации Logstash:\n\nCODE_BLOCK_1\n\nОбратите внимание, что перед дальнейшими действиями необходимо учитывать важный нюанс: Manticore не поддерживает управление шаблонами индексов и управление жизненным циклом индекса (ILM) в Elasticsearch. Поскольку эти функции по умолчанию включены в Logstash, их необходимо явно отключить в конфигурации. Кроме того, параметр hosts в разделе output конфигурации должен соответствовать HTTP-порту прослушивания Manticore (по умолчанию localhost:9308).\n\n## Конфигурация для разных версий\n\nКонфигурация зависит от используемой версии Logstash.\n\n### Конфигурация для Logstash 7.17\n\nДля Logstash 7.17 базовая конфигурация проста и не требует дополнительных настроек ILM:\n\nCODE_BLOCK_2\n\nЗапускать так:\n\nCODE_BLOCK_3\n\n### Конфигурация для Logstash 8.0 - 9.1\n\nНачиная с версии 8.0, ILM и управление шаблонами включены по умолчанию и должны быть явно отключены для совместимости с Manticore:\n\nCODE_BLOCK_4\n\nДля версий 9.0 и 9.1 Logstash требует запуска от имени суперпользователя. Задайте переменную окружения перед запуском:\n\nCODE_BLOCK_5\n\n### Конфигурация для Logstash 9.2+\n\nНачиная с версии 9.2, рекомендуется настраивать параметр суперпользователя через конфигурационный файл вместо использования переменных окружения. Это обеспечивает более постоянное и управляемое решение.\n\nКонфигурационный файл (например, `logstash.conf`):\n\nCODE_BLOCK_6\n\nСоздайте `/etc/logstash/logstash.yml`:\n\nCODE_BLOCK_7\n\nЗапускать так:\n\nCODE_BLOCK_8\n\n## Результаты Logstash\n\nПосле внесения описанных изменений в конфигурацию вы можете запустить Logstash, и данные из журнала dpkg будут переданы в Manticore и корректно проиндексированы.\n\nНиже приведена итоговая схема созданной таблицы и пример вставленного документа:\n\nCODE_BLOCK_9\n\nCODE_BLOCK_10" + }, + "is_code_or_comment": false } } diff --git a/manual/chinese/Integration/Logstash.md b/manual/chinese/Integration/Logstash.md index c541a6c40f..cfa7fbd1ef 100644 --- a/manual/chinese/Integration/Logstash.md +++ b/manual/chinese/Integration/Logstash.md @@ -1,12 +1,12 @@ # 与 Logstash 的集成 -> 注意:与 Logstash 的集成需要 [Manticore Buddy](../Installation/Manticore_Buddy.md)。如果无法正常工作,请确保已安装 Buddy。 +> 注意:与 Logstash 的集成需要 [Manticore Buddy](../Installation/Manticore_Buddy.md)。如果集成不工作,请确保 Buddy 已安装。 -[Logstash](https://www.elastic.co/logstash) 是一个日志管理工具,能够从各种来源收集数据,实时转换数据,并将其发送到所需的目的地。它通常被用作 Elasticsearch(一个开源的分析和搜索引擎)数据管道。 +[Logstash](https://www.elastic.co/logstash) 是一种日志管理工具,它从各种来源收集数据,实时转换数据,并发送到您想要的目标。它通常用作 Elasticsearch(一个开源分析和搜索引擎)的数据管道。 -现在,Manticore 支持使用 Logstash 作为处理管道。这允许将收集和转换的数据发送到 Manticore,就像发送到 Elasticsearch 一样。目前支持的版本为 7.6-9.2。 +现在,Manticore 支持使用 Logstash 作为处理管道。这允许收集和转换后的数据像发送给 Elasticsearch 一样发送给 Manticore。目前,支持的版本是 7.6 到 9.2。 -让我们来看一个用于索引 `dpkg.log` 的简单 Logstash 配置文件示例,`dpkg.log` 是 Debian 软件包管理器的标准日志文件。该日志本身结构简单,如下所示: +让我们来看看一个用于索引 `dpkg.log` 的简单 Logstash 配置文件示例,`dpkg.log` 是 Debian 包管理器的标准日志文件。该日志本身结构简单,如下所示: ``` 2023-05-31 10:42:55 status triggers-awaited ca-certificates-java:all 20190405ubuntu1.1 @@ -18,7 +18,7 @@ ## Logstash 配置 -这是一个 Logstash 配置示例: +下面是一个 Logstash 配置示例: ``` input { @@ -43,13 +43,119 @@ output { } ``` -请注意,在进一步操作之前,有一个关键的注意事项需要说明:Manticore 不支持 Elasticsearch 的日志模板管理和索引生命周期管理功能。由于这些功能在 Logstash 中默认启用,因此需要在配置中显式禁用它们。另外,输出配置部分的 hosts 选项必须对应 Manticore 的 HTTP 监听端口(默认是 localhost:9308)。 +请注意,在继续之前,需要强调一个关键注意事项:Manticore 不支持 Elasticsearch 的日志模板管理和索引生命周期管理功能。由于这些功能在 Logstash 中默认启用,必须在配置中显式禁用它们。此外,output 配置段中的 hosts 选项必须对应 Manticore 的 HTTP 监听端口(默认是 localhost:9308)。 + +## 针对不同版本的配置 + +配置根据您使用的 Logstash 版本而有所不同。 + +### Logstash 7.17 的配置 + +对于 Logstash 7.17,基本配置相当简单,不需要额外的 ILM 设置: + +``` +input { + file { + path => ["/var/log/dpkg.log"] + start_position => "beginning" + sincedb_path => "/dev/null" + mode => "read" + exit_after_read => "true" + file_completed_action => "log" + file_completed_log_path => "/dev/null" + } +} + +output { + elasticsearch { + index => "dpkg_log" + hosts => ["http://localhost:9308"] + } +} +``` + +运行命令: +```bash +logstash -f logstash.conf +``` + +### Logstash 8.0 - 9.1 的配置 + +从 8.0 版本开始,ILM(索引生命周期管理)和模板管理默认启用,必须显式禁用以兼容 Manticore: + +``` +input { + file { + path => ["/var/log/dpkg.log"] + start_position => "beginning" + sincedb_path => "/dev/null" + mode => "read" + exit_after_read => "true" + file_completed_action => "log" + file_completed_log_path => "/dev/null" + } +} + +output { + elasticsearch { + index => "dpkg_log" + hosts => ["http://localhost:9308"] + ilm_enabled => false + manage_template => false + } +} +``` + +对于 9.0 和 9.1 版本,Logstash 需要以超级用户身份运行。在启动前设置环境变量: + +```bash +export ALLOW_SUPERUSER=1 +logstash -f logstash.conf +``` + +### Logstash 9.2+ 的配置 + +从 9.2 版本开始,推荐通过配置文件来配置超级用户设置,而不是使用环境变量,提供了更持久和便于管理的方案。 + +配置文件(例如 `logstash.conf`): +``` +input { + file { + path => ["/var/log/dpkg.log"] + start_position => "beginning" + sincedb_path => "/dev/null" + mode => "read" + exit_after_read => "true" + file_completed_action => "log" + file_completed_log_path => "/dev/null" + } +} + +output { + elasticsearch { + index => "dpkg_log" + hosts => ["http://localhost:9308"] + ilm_enabled => false + manage_template => false + } +} +``` + +创建 `/etc/logstash/logstash.yml`: +```yaml +allow_superuser: true +``` + +运行命令: +```bash +logstash --path.settings=/etc/logstash -f logstash.conf +``` ## Logstash 结果 -按照上述方式调整配置后,你可以运行 Logstash,dpkg 日志中的数据将被传递到 Manticore 并正确建立索引。 +按照上述方式调整配置后,您可以运行 Logstash,dpkg 日志中的数据将传递给 Manticore 并正确索引。 -以下是创建表的结果模式和插入文档的示例: +下面是创建的表的结果模式以及插入文档的示例: ``` mysql> DESCRIBE dpkg_log; diff --git a/manual/russian/Integration/Logstash.md b/manual/russian/Integration/Logstash.md index c8979c2cdb..8c281bf13d 100644 --- a/manual/russian/Integration/Logstash.md +++ b/manual/russian/Integration/Logstash.md @@ -2,11 +2,11 @@ > ПРИМЕЧАНИЕ: Интеграция с Logstash требует [Manticore Buddy](../Installation/Manticore_Buddy.md). Если она не работает, убедитесь, что Buddy установлен. -[Logstash](https://www.elastic.co/logstash) — это инструмент управления журналами, который собирает данные из различных источников, преобразует их на лету и отправляет в нужное место назначения. Он часто используется как конвейер данных для Elasticsearch — открытого аналитического и поискового движка. +[Logstash](https://www.elastic.co/logstash) — это инструмент управления журналами, который собирает данные из разных источников, преобразует их на лету и отправляет в желаемое место назначения. Часто используется как конвейер данных для Elasticsearch, открытого движка аналитики и поиска. -Теперь Manticore поддерживает использование Logstash в качестве конвейера обработки. Это позволяет отправлять собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.6-9.2. +Теперь Manticore поддерживает использование Logstash в качестве конвейера обработки. Это позволяет передавать собранные и преобразованные данные в Manticore так же, как в Elasticsearch. В настоящее время поддерживаются версии 7.6-9.2. -Рассмотрим простой пример конфигурационного файла Logstash, используемого для индексирования `dpkg.log` — стандартного файла журнала менеджера пакетов Debian. Сам журнал имеет простую структуру, как показано ниже: +Рассмотрим простой пример файла конфигурации Logstash, используемого для индексирования `dpkg.log`, стандартного журнала менеджера пакетов Debian. Сам журнал имеет простую структуру, как показано ниже: ``` 2023-05-31 10:42:55 status triggers-awaited ca-certificates-java:all 20190405ubuntu1.1 @@ -43,13 +43,119 @@ output { } ``` -Обратите внимание, что прежде чем продолжать, необходимо учесть один важный момент: Manticore не поддерживает функции управления шаблонами индексов (Log Template Management) и управления жизненным циклом индексов (Index Lifecycle Management) в Elasticsearch. Поскольку эти функции по умолчанию включены в Logstash, их необходимо явно отключить в конфигурации. Кроме того, опция hosts в разделе output конфигурации должна соответствовать HTTP-порту прослушивания Manticore (по умолчанию localhost:9308). +Обратите внимание, что перед дальнейшими действиями необходимо учитывать важный нюанс: Manticore не поддерживает управление шаблонами индексов и управление жизненным циклом индекса (ILM) в Elasticsearch. Поскольку эти функции по умолчанию включены в Logstash, их необходимо явно отключить в конфигурации. Кроме того, параметр hosts в разделе output конфигурации должен соответствовать HTTP-порту прослушивания Manticore (по умолчанию localhost:9308). + +## Конфигурация для разных версий + +Конфигурация зависит от используемой версии Logstash. + +### Конфигурация для Logstash 7.17 + +Для Logstash 7.17 базовая конфигурация проста и не требует дополнительных настроек ILM: + +``` +input { + file { + path => ["/var/log/dpkg.log"] + start_position => "beginning" + sincedb_path => "/dev/null" + mode => "read" + exit_after_read => "true" + file_completed_action => "log" + file_completed_log_path => "/dev/null" + } +} + +output { + elasticsearch { + index => "dpkg_log" + hosts => ["http://localhost:9308"] + } +} +``` + +Запускать так: +```bash +logstash -f logstash.conf +``` + +### Конфигурация для Logstash 8.0 - 9.1 + +Начиная с версии 8.0, ILM и управление шаблонами включены по умолчанию и должны быть явно отключены для совместимости с Manticore: + +``` +input { + file { + path => ["/var/log/dpkg.log"] + start_position => "beginning" + sincedb_path => "/dev/null" + mode => "read" + exit_after_read => "true" + file_completed_action => "log" + file_completed_log_path => "/dev/null" + } +} + +output { + elasticsearch { + index => "dpkg_log" + hosts => ["http://localhost:9308"] + ilm_enabled => false + manage_template => false + } +} +``` + +Для версий 9.0 и 9.1 Logstash требует запуска от имени суперпользователя. Задайте переменную окружения перед запуском: + +```bash +export ALLOW_SUPERUSER=1 +logstash -f logstash.conf +``` + +### Конфигурация для Logstash 9.2+ + +Начиная с версии 9.2, рекомендуется настраивать параметр суперпользователя через конфигурационный файл вместо использования переменных окружения. Это обеспечивает более постоянное и управляемое решение. + +Конфигурационный файл (например, `logstash.conf`): +``` +input { + file { + path => ["/var/log/dpkg.log"] + start_position => "beginning" + sincedb_path => "/dev/null" + mode => "read" + exit_after_read => "true" + file_completed_action => "log" + file_completed_log_path => "/dev/null" + } +} + +output { + elasticsearch { + index => "dpkg_log" + hosts => ["http://localhost:9308"] + ilm_enabled => false + manage_template => false + } +} +``` + +Создайте `/etc/logstash/logstash.yml`: +```yaml +allow_superuser: true +``` + +Запускать так: +```bash +logstash --path.settings=/etc/logstash -f logstash.conf +``` ## Результаты Logstash -После корректировки конфигурации, как описано выше, вы можете запустить Logstash, и данные из журнала dpkg будут переданы в Manticore и корректно проиндексированы. +После внесения описанных изменений в конфигурацию вы можете запустить Logstash, и данные из журнала dpkg будут переданы в Manticore и корректно проиндексированы. -Вот итоговая схема созданной таблицы и пример вставленного документа: +Ниже приведена итоговая схема созданной таблицы и пример вставленного документа: ``` mysql> DESCRIBE dpkg_log; From 400dba263fb939690a164235471a8c149d1118cd Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Wed, 26 Nov 2025 22:26:26 +0100 Subject: [PATCH 18/20] Correction manual/russian/Integration/Filebeat.md. --- manual/chinese/Integration/Filebeat.md | 2 +- manual/russian/Integration/Filebeat.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manual/chinese/Integration/Filebeat.md b/manual/chinese/Integration/Filebeat.md index 54995fd8e2..e305def675 100644 --- a/manual/chinese/Integration/Filebeat.md +++ b/manual/chinese/Integration/Filebeat.md @@ -71,7 +71,7 @@ setup.template.name: "dpkg_log" setup.template.pattern: "dpkg_log" ``` -### Filebeat 8.11 - 8.x 的配置 +### Filebeat 8.11 - 8.19 的配置 从 8.11 版本起,默认启用输出压缩,因此您必须显式设置 `compression_level: 0` 以保证与 Manticore 的兼容: diff --git a/manual/russian/Integration/Filebeat.md b/manual/russian/Integration/Filebeat.md index 52f8394448..bb7aa5c33f 100644 --- a/manual/russian/Integration/Filebeat.md +++ b/manual/russian/Integration/Filebeat.md @@ -71,7 +71,7 @@ setup.template.name: "dpkg_log" setup.template.pattern: "dpkg_log" ``` -### Конфигурация для Filebeat 8.11 - 8.x +### Конфигурация для Filebeat 8.11 - 8.19 Начиная с версии 8.11, сжатие вывода включено по умолчанию, поэтому для совместимости с Manticore нужно явно указать `compression_level: 0`: From 4bb1d40c0b684d54a7bbf827fc5a6ca52bb9c3b1 Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Fri, 28 Nov 2025 17:23:35 +0100 Subject: [PATCH 19/20] Replace Alpine Linux package manager (apk) with Ubuntu package manager (apt-get) in Filebeat and Logstash version check tests to match the test-kit-latest Docker image OS (Ubuntu 24.04). --- .github/workflows/nightly_integration.yml | 8 ++++---- .../test-integrations-check-filebeat-versions.rec | 2 +- .../test-integrations-check-logstash-versions.rec | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/nightly_integration.yml b/.github/workflows/nightly_integration.yml index 5939f095e9..449c851abb 100644 --- a/.github/workflows/nightly_integration.yml +++ b/.github/workflows/nightly_integration.yml @@ -65,9 +65,9 @@ jobs: - uses: manticoresoftware/clt@0.7.3 with: test_prefix: test/clt-tests/integrations/filebeat/test-integrations-check-filebeat-versions - image: manticoresearch/dind:v1 + image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest comment_mode: failures - run_args: --privileged -v $(pwd)/manual:/manual + run_args: -v $(pwd)/manual:/manual ui_host: "https://clt.manticoresearch.com" test_fluentbit: @@ -124,9 +124,9 @@ jobs: - uses: manticoresoftware/clt@0.7.3 with: test_prefix: test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions - image: manticoresearch/dind:v1 + image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest comment_mode: failures - run_args: --privileged -v $(pwd)/manual:/manual + run_args: -v $(pwd)/manual:/manual ui_host: "https://clt.manticoresearch.com" test_logstash_versions: diff --git a/test/clt-tests/integrations/filebeat/test-integrations-check-filebeat-versions.rec b/test/clt-tests/integrations/filebeat/test-integrations-check-filebeat-versions.rec index e82765304e..76710d70fb 100644 --- a/test/clt-tests/integrations/filebeat/test-integrations-check-filebeat-versions.rec +++ b/test/clt-tests/integrations/filebeat/test-integrations-check-filebeat-versions.rec @@ -2,7 +2,7 @@ set -e ––– output ––– ––– input ––– -apk add --no-cache curl jq > /dev/null 2>&1; echo $? +apt-get update > /dev/null 2>&1 && apt-get install -y curl jq > /dev/null 2>&1; echo $? ––– output ––– 0 ––– input ––– diff --git a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec index b30026dbda..11ab3e54c8 100644 --- a/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec +++ b/test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions.rec @@ -2,7 +2,7 @@ set -e ––– output ––– ––– input ––– -apk add --no-cache curl jq > /dev/null 2>&1; echo $? +apt-get update > /dev/null 2>&1 && apt-get install -y curl jq > /dev/null 2>&1; echo $? ––– output ––– 0 ––– input ––– From 2008815284f3260daab1af7b1aa90a19262221a8 Mon Sep 17 00:00:00 2001 From: Pavel_Shilin Date: Sat, 29 Nov 2025 13:53:06 +0100 Subject: [PATCH 20/20] Update nightly_integration.yml --- .github/workflows/nightly_integration.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nightly_integration.yml b/.github/workflows/nightly_integration.yml index 449c851abb..55ebe94160 100644 --- a/.github/workflows/nightly_integration.yml +++ b/.github/workflows/nightly_integration.yml @@ -67,7 +67,7 @@ jobs: test_prefix: test/clt-tests/integrations/filebeat/test-integrations-check-filebeat-versions image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest comment_mode: failures - run_args: -v $(pwd)/manual:/manual + run_args: --privileged -v $(pwd)/manual:/manual ui_host: "https://clt.manticoresearch.com" test_fluentbit: @@ -126,7 +126,7 @@ jobs: test_prefix: test/clt-tests/integrations/logstash/test-integrations-check-logstash-versions image: ghcr.io/manticoresoftware/manticoresearch:test-kit-latest comment_mode: failures - run_args: -v $(pwd)/manual:/manual + run_args: --privileged -v $(pwd)/manual:/manual ui_host: "https://clt.manticoresearch.com" test_logstash_versions: