Skip to content

Commit

Permalink
Add test script that tests the grok pipeline by sending an event thro…
Browse files Browse the repository at this point in the history
…ugh it
  • Loading branch information
whyscream committed Feb 10, 2024
1 parent 83feb6a commit 48317be
Showing 1 changed file with 69 additions and 0 deletions.
69 changes: 69 additions & 0 deletions test_pipeline.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#!/bin/sh

set -eu

INPUT=$(mktemp tmp.logstash.in.XXXXX)
OUTPUT=$(mktemp tmp.logstash.out.XXXXX)
PIPELINE=$(mktemp tmp.logstash.pipeline.XXXXX)

echo Preparing input data
echo "postfix/smtp[123]: 7EE668039: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:2525, delay=3.6, delays=0.2/0.02/0.04/3.3, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 153053D)" > $INPUT

echo Preparing pipeline config
cat > $PIPELINE << EOF
input {
file {
path => "/tmp/logstash.in"
start_position => beginning
}
}
filter {
dissect {
mapping => {
"message" => "%{program}[%{pid}]: %{message}"
}
}
}
EOF

cat 50-filter-postfix.conf >> $PIPELINE

cat >> $PIPELINE << EOF
output {
file {
path => "/tmp/logstash.out"
}
}
EOF

echo Starting logstash docker container
CONTAINER_ID=$(docker run --rm --detach \
--volume ./${INPUT}:/tmp/logstash.in \
--volume ./${OUTPUT}:/tmp/logstash.out \
--volume ./postfix.grok:/etc/logstash/patterns.d/postfix.grok \
--volume ./${PIPELINE}:/usr/share/logstash/pipeline/pipeline.conf \
logstash:8.12.0 \
logstash -f /usr/share/logstash/pipeline/pipeline.conf)

echo -n "Waiting for output from logstash "
until test -s $OUTPUT; do
echo -n "."
sleep 2
done
echo

docker stop --time 1 $CONTAINER_ID > /dev/null

if test "$(jq .tags[0] $OUTPUT)" = '"_grok_postfix_success"'; then
echo Grok processing successful!
jq . $OUTPUT
else
echo "Grok processing failed :<"
jq . $OUTPUT
exit 1
fi

echo Cleaning up
rm -f $INPUT $OUTPUT $PIPELINE

echo Done

0 comments on commit 48317be

Please sign in to comment.