Add separate commands to generate a munin plugin and to provide munin data; split aggegrate and count login data
parent
82b0dba9d5
commit
94262f0377
@ -0,0 +1,81 @@ |
||||
<?php |
||||
/** |
||||
* Authserver, an OAuth2-based single-signon authentication provider written in PHP. |
||||
* |
||||
* Copyright (C) 2017 Lars Vierbergen |
||||
* |
||||
* his program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as |
||||
* published by the Free Software Foundation, either version 3 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 Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
*/ |
||||
namespace vierbergenlars\AuthserverStatsBundle\Command; |
||||
|
||||
use Symfony\Component\Console\Command\Command; |
||||
use Symfony\Component\Console\Input\InputInterface; |
||||
use Symfony\Component\Console\Output\OutputInterface; |
||||
use vierbergenlars\AuthserverStatsBundle\Event\StatsEvent; |
||||
use Symfony\Component\Console\Input\InputOption; |
||||
use Symfony\Component\Console\Helper\Table; |
||||
use Symfony\Component\Process\PhpExecutableFinder; |
||||
|
||||
class GenerateMuninCommand extends Command |
||||
{ |
||||
|
||||
protected function configure() |
||||
{ |
||||
$this->setName('stats:generate:munin-plugin') |
||||
->addOption('module', 'm', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Modules to generate munin plugin for') |
||||
->addOption('exclude', 'x', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Modules to exclude from munin graphing') |
||||
->addOption('static-config', 's', InputOption::VALUE_NONE, 'Include a statically generated munin configuration'); |
||||
} |
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output) |
||||
{ |
||||
$eventDispatcher = $this->getApplication() |
||||
->getKernel() |
||||
->getContainer() |
||||
->get('event_dispatcher'); |
||||
|
||||
/* @var $eventDispatcher Symfony\Component\EventDispatcher\EventDispatcher */ |
||||
$event = new StatsEvent($input->getOption('module')); |
||||
$eventDispatcher->dispatch(StatsEvent::class, $event); |
||||
$modules = array_merge(array_diff($event->getModules(), $input->getOption('exclude')), $input->getOption('module')); |
||||
|
||||
$output->writeln('#!/bin/sh'); |
||||
if ($input->getOption('static-config')) { |
||||
$output->writeln([ |
||||
'case $1 in', |
||||
'config)', |
||||
'cat <<\'EOM\'' |
||||
]); |
||||
foreach ($modules as $module) { |
||||
$muninConfig = $event->getMuninConfig($module); |
||||
foreach ($muninConfig as $key => $value) { |
||||
$output->writeln($key . ' ' . $value, OutputInterface::OUTPUT_RAW); |
||||
} |
||||
} |
||||
$output->writeln([ |
||||
'EOM', |
||||
'exit 0;;', |
||||
'esac' |
||||
]); |
||||
} |
||||
|
||||
$modulesParameters = array_map(function ($module) { |
||||
return '-m ' . $module; |
||||
}, $modules); |
||||
$phpFinder = new PhpExecutableFinder(); |
||||
$kernel = $this->getApplication()->getKernel(); |
||||
/* @var $kernel \AppKernel */ |
||||
$output->writeln(sprintf('%s %s -e %s stats:munin "$1" %s', $phpFinder->find(), $kernel->getRootDir() . '/console', $kernel->getEnvironment(), implode(' ', $modulesParameters))); |
||||
} |
||||
} |
@ -0,0 +1,66 @@ |
||||
<?php |
||||
/** |
||||
* Authserver, an OAuth2-based single-signon authentication provider written in PHP. |
||||
* |
||||
* Copyright (C) 2017 Lars Vierbergen |
||||
* |
||||
* his program is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License as |
||||
* published by the Free Software Foundation, either version 3 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 Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
*/ |
||||
namespace vierbergenlars\AuthserverStatsBundle\Command; |
||||
|
||||
use Symfony\Component\Console\Command\Command; |
||||
use Symfony\Component\Console\Input\InputInterface; |
||||
use Symfony\Component\Console\Output\OutputInterface; |
||||
use vierbergenlars\AuthserverStatsBundle\Event\StatsEvent; |
||||
use Symfony\Component\Console\Input\InputOption; |
||||
use Symfony\Component\Console\Helper\Table; |
||||
use Symfony\Component\Console\Input\InputArgument; |
||||
|
||||
class MuninStatsCommand extends Command |
||||
{ |
||||
|
||||
protected function configure() |
||||
{ |
||||
$this->setName('stats:munin') |
||||
->addOption('module', 'm', InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Modules to fetch statistics for') |
||||
->addArgument('munin', InputArgument::OPTIONAL, 'munin arguments'); |
||||
} |
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output) |
||||
{ |
||||
$eventDispatcher = $this->getApplication() |
||||
->getKernel() |
||||
->getContainer() |
||||
->get('event_dispatcher'); |
||||
|
||||
/* @var $eventDispatcher Symfony\Component\EventDispatcher\EventDispatcher */ |
||||
|
||||
$event = new StatsEvent($input->getOption('module')); |
||||
$eventDispatcher->dispatch(StatsEvent::class, $event); |
||||
|
||||
foreach ($event->getModules() as $module) { |
||||
$output->writeln('multigraph authserver_' . $module, OutputInterface::OUTPUT_RAW); |
||||
if ($input->getArgument('munin') === 'config') { |
||||
$stats = $event->getMuninConfig($module); |
||||
$suffix = ' '; |
||||
} else { |
||||
$stats = $event->getModuleStatistics($module); |
||||
$suffix = '.value '; |
||||
} |
||||
foreach ($stats as $k => $v) { |
||||
$output->writeln($k . $suffix . $v, OutputInterface::OUTPUT_RAW); |
||||
} |
||||
} |
||||
} |
||||
} |
Reference in new issue