#!/bin/sh
#
# Plugin to monitor queue time spent rendering per queue by renderd
#
# Parameters:
#
# 	config   (required)
# 	autoconf (optional - used by munin-config)
#
# Copyright (c) 2007 - 2023 by mod_tile contributors (see AUTHORS file)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; If not, see http://www.gnu.org/licenses/.

if [ "$1" = "config" ]; then

  echo 'graph_title Renderd time spent by queue'
  echo 'graph_args --base 1000 -l 0'
  echo 'graph_vlabel time spent per ${graph_period}'
  echo 'graph_category renderd'
  echo 'reqPrio.label Priority request queue'
  echo 'reqPrio.type DERIVE'
  echo 'reqPrio.cdef reqPrio,1000,/'
  echo 'reqPrio.min 0'
  echo 'reqPrio.draw AREA'
  echo 'reqPrio.info Time for priority request queue'
  echo 'req.label Request queue'
  echo 'req.type DERIVE'
  echo 'req.cdef req,1000,/'
  echo 'req.min 0'
  echo 'req.draw STACK'
  echo 'req.info Time for Request queue'
  echo 'reqLow.label Low priority request queue'
  echo 'reqLow.type DERIVE'
  echo 'reqLow.cdef reqLow,1000,/'
  echo 'reqLow.min 0'
  echo 'reqLow.draw STACK'
  echo 'reqLow.info Time for low priority request queue'
  echo 'dirty.label Dirty queue'
  echo 'dirty.type DERIVE'
  echo 'dirty.cdef dirty,1000,/'
  echo 'dirty.min 0'
  echo 'dirty.draw STACK'
  echo 'dirty.info Time for dirty queue'
  echo 'reqBulk.label Bulk queue'
  echo 'reqBulk.type DERIVE'
  echo 'reqBulk.cdef reqBulk,1000,/'
  echo 'reqBulk.min 0'
  echo 'reqBulk.draw STACK'
  echo 'reqBulk.info Time for bulk queue'
  exit 0
fi

reqTime=$(sed -e '/^TimeRendered/!d' -e 's/.*: //' -e q ${RENDERD_STATS:-/run/renderd/renderd.stats})
reqprioTime=$(sed -e '/^TimePrioRendered/!d' -e 's/.*: //' -e q ${RENDERD_STATS:-/run/renderd/renderd.stats})
reqpriolowTime=$(sed -e '/^TimeLowRendered/!d' -e 's/.*: //' -e q ${RENDERD_STATS:-/run/renderd/renderd.stats})
reqbulkTime=$(sed -e '/^TimeBulkRendered/!d' -e 's/.*: //' -e q ${RENDERD_STATS:-/run/renderd/renderd.stats})
dirtyTime=$(sed -e '/^TimeDirtyRendered/!d' -e 's/.*: //' -e q ${RENDERD_STATS:-/run/renderd/renderd.stats})

echo "req.value " $reqTime
echo "reqLow.value " $reqpriolowTime
echo "reqPrio.value " $reqprioTime
echo "dirty.value " $dirtyTime
echo "reqBulk.value " $reqbulkTime
