From 90d354b700448aa9d658464921f8bed17e657c90 Mon Sep 17 00:00:00 2001 From: Dimitri Tischenko Date: Sun, 20 Oct 2019 12:31:27 +0200 Subject: [PATCH 1/4] added symlink to parser inside files dir for the task --- files/puppet-profile-parser.rb | 1 + 1 file changed, 1 insertion(+) create mode 120000 files/puppet-profile-parser.rb diff --git a/files/puppet-profile-parser.rb b/files/puppet-profile-parser.rb new file mode 120000 index 0000000..7d1a009 --- /dev/null +++ b/files/puppet-profile-parser.rb @@ -0,0 +1 @@ +../puppet-profile-parser.rb \ No newline at end of file From 82dda92ceae4582afb5e63bd7e40c9bee76e0aa0 Mon Sep 17 00:00:00 2001 From: Dimitri Tischenko Date: Sun, 20 Oct 2019 12:31:41 +0200 Subject: [PATCH 2/4] Added show_summary task --- tasks/show_summary.json | 12 ++++++++++++ tasks/show_summary.sh | 10 ++++++++++ 2 files changed, 22 insertions(+) create mode 100644 tasks/show_summary.json create mode 100644 tasks/show_summary.sh diff --git a/tasks/show_summary.json b/tasks/show_summary.json new file mode 100644 index 0000000..5c5f696 --- /dev/null +++ b/tasks/show_summary.json @@ -0,0 +1,12 @@ +{ + "description": "Analyze puppetserver log with profiling information and produce a summary", + "parameters": { + "logs": { + "type": "Optional[String]", + "description": "One or more log files to analyze, space separated, can contain shell glob patterns and point to .gz files. Defaults to '/var/log/puppetlabs/puppetserver/puppetserver.log'" + } + }, + "files": [ + "puppet_profile_parser/files/puppet-profile-parser.rb" + ] +} \ No newline at end of file diff --git a/tasks/show_summary.sh b/tasks/show_summary.sh new file mode 100644 index 0000000..cba7070 --- /dev/null +++ b/tasks/show_summary.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +LOGS=${PT_logs:-/var/log/puppetlabs/puppetserver/puppetserver.log} +RUBY=$(which ruby||echo "/opt/puppetlabs/puppet/bin/ruby") + +echo "Analyzing logs: $LOGS" +# we allog $LOGS to contain globbing characters +# FIXME: potential security issue with allowing any logfile to be specified +# Probably need to restrict to files inside /var/log/puppetlabs/puppetserver +$RUBY ${PT__installdir}/puppet_profile_parser/files/puppet-profile-parser.rb ${LOGS} From ac121494b324d751138a2fe36b5e9e9b03b1e0ae Mon Sep 17 00:00:00 2001 From: Dimitri Tischenko Date: Mon, 21 Oct 2019 12:14:10 +0200 Subject: [PATCH 3/4] now evaluating glob pattern to list analyzed logs --- tasks/show_summary.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tasks/show_summary.sh b/tasks/show_summary.sh index cba7070..d4019cf 100644 --- a/tasks/show_summary.sh +++ b/tasks/show_summary.sh @@ -3,8 +3,9 @@ LOGS=${PT_logs:-/var/log/puppetlabs/puppetserver/puppetserver.log} RUBY=$(which ruby||echo "/opt/puppetlabs/puppet/bin/ruby") -echo "Analyzing logs: $LOGS" -# we allog $LOGS to contain globbing characters +echo "Analyzing logs: " +eval echo $LOGS +# we allow $LOGS to contain globbing characters # FIXME: potential security issue with allowing any logfile to be specified # Probably need to restrict to files inside /var/log/puppetlabs/puppetserver $RUBY ${PT__installdir}/puppet_profile_parser/files/puppet-profile-parser.rb ${LOGS} From 630281474cfeb8d8fa94abc97b8ad6626d84cc50 Mon Sep 17 00:00:00 2001 From: Dimitri Tischenko Date: Tue, 22 Oct 2019 12:27:39 +0200 Subject: [PATCH 4/4] changed log globbing, added error handling for no matching logs --- tasks/show_summary.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/tasks/show_summary.sh b/tasks/show_summary.sh index d4019cf..08a69ac 100644 --- a/tasks/show_summary.sh +++ b/tasks/show_summary.sh @@ -2,10 +2,19 @@ LOGS=${PT_logs:-/var/log/puppetlabs/puppetserver/puppetserver.log} RUBY=$(which ruby||echo "/opt/puppetlabs/puppet/bin/ruby") - +# allow expansion to empty string +shopt -s nullglob +log_list=($LOGS) +# prevent globbing to grab the parameter itself +set -o noglob +echo Supplied logs parameter: ${LOGS} +if [ ${#log_list[@]} == 0 ] ; then + echo "Could not find matching log files" + exit 1 +fi echo "Analyzing logs: " -eval echo $LOGS +echo "${log_list[@]}" # we allow $LOGS to contain globbing characters # FIXME: potential security issue with allowing any logfile to be specified # Probably need to restrict to files inside /var/log/puppetlabs/puppetserver -$RUBY ${PT__installdir}/puppet_profile_parser/files/puppet-profile-parser.rb ${LOGS} +$RUBY ${PT__installdir}/puppet_profile_parser/files/puppet-profile-parser.rb ${log_list[@]}