示例#1
0
 /**
  * Create Metrics Collector Instance
  *
  * @param string $type
  * @param array $options
  * @return \Beberlei\Metrics\Collector\Collector
  */
 public static function create($type, array $options = array())
 {
     switch ($type) {
         case 'statsd':
             $host = isset($options['host']) ? $options['host'] : 'localhost';
             $port = isset($options['port']) ? $options['port'] : 8125;
             return new Collector\StatsD($host, $port);
         case 'zabbix':
             if (!isset($options['hostname'])) {
                 throw new MetricsException('Hostname is required for zabbix collector.');
             }
             $host = isset($options['host']) ? $options['host'] : null;
             $port = isset($options['port']) ? $options['port'] : null;
             $sender = new Sender($host, $port);
             return new Collector\Zabbix($sender, $options['hostname']);
         case 'zabbix_file':
             if (!isset($options['hostname'])) {
                 throw new MetricsException('Hostname is required for zabbix collector.');
             }
             $file = isset($options['file']) ? $options['file'] : null;
             $sender = new Sender();
             $sender->importAgentConfig(new Config($file));
             return new Collector\Zabbix($sender, $options['hostname']);
         case 'librato':
             if (!isset($options['hostname'])) {
                 throw new MetricsException('Hostname is required for librato collector.');
             }
             if (!isset($options['username'])) {
                 throw new MetricsException("No username given for librato collector.");
             }
             if (!isset($options['password'])) {
                 throw new MetricsException("No password given for librato collector.");
             }
             return new Collector\Librato(self::getHttpClient(), $options['hostname'], $options['username'], $options['password']);
         case 'null':
             return new Collector\Null();
         default:
             throw new MetricsException('Unknown metrics collector given.');
     }
 }
示例#2
0
 function _addData(\Net\Zabbix\Sender $sender)
 {
     $sender->addData("hostname1", "key1", "value1");
     $sender->addData("hostname2", "key2", "value2");
     $sender->addData("hostname3", "key3", "value3", 1234567890);
 }
示例#3
0
 /**
  * Create Metrics Collector Instance
  *
  * @param string $type
  * @param array  $options
  *
  * @throws MetricsException
  * @return Collector\Collector
  */
 public static function create($type, array $options = array())
 {
     switch ($type) {
         case 'statsd':
             if ((!isset($options['host']) || !isset($options['port'])) && isset($options['prefix'])) {
                 throw new MetricsException('You should specified a host and a port if you specified a prefix.');
             }
             if (!isset($options['host']) && !isset($options['port'])) {
                 return new Collector\StatsD();
             }
             if (isset($options['host']) && !isset($options['port'])) {
                 return new Collector\StatsD($options['host']);
             }
             if (!isset($options['host']) && isset($options['port'])) {
                 throw new MetricsException('You should specified a host if you specified a port.');
             }
             $prefix = isset($options['prefix']) ? $options['prefix'] : '';
             return new Collector\StatsD($options['host'], $options['port'], $prefix);
         case 'graphite':
             if (!isset($options['host']) && !isset($options['port'])) {
                 return new Collector\Graphite();
             }
             if (isset($options['host']) && !isset($options['port'])) {
                 return new Collector\Graphite($options['host']);
             }
             if (!isset($options['host']) && isset($options['port'])) {
                 throw new MetricsException('You should specified a host if you specified a port.');
             }
             return new Collector\Graphite($options['host'], $options['port']);
         case 'zabbix':
             if (!isset($options['hostname'])) {
                 throw new MetricsException('Hostname is required for zabbix collector.');
             }
             if (!isset($options['server']) && !isset($options['port'])) {
                 $sender = new Sender();
             } elseif (isset($options['server']) && !isset($options['port'])) {
                 $sender = new Sender($options['server']);
             } elseif (!isset($options['server']) && isset($options['port'])) {
                 throw new MetricsException('You should specified a server if you specified a port.');
             } else {
                 $sender = new Sender($options['server'], $options['port']);
             }
             return new Collector\Zabbix($sender, $options['hostname']);
         case 'zabbix_file':
             if (!isset($options['hostname'])) {
                 throw new MetricsException('Hostname is required for zabbix collector.');
             }
             $file = isset($options['file']) ? $options['file'] : null;
             $sender = new Sender();
             $sender->importAgentConfig(new Config($file));
             return new Collector\Zabbix($sender, $options['hostname']);
         case 'librato':
             if (!isset($options['hostname'])) {
                 throw new MetricsException('Hostname is required for librato collector.');
             }
             if (!isset($options['username'])) {
                 throw new MetricsException("No username given for librato collector.");
             }
             if (!isset($options['password'])) {
                 throw new MetricsException("No password given for librato collector.");
             }
             return new Collector\Librato(self::getHttpClient(), $options['hostname'], $options['username'], $options['password']);
         case 'doctrine_dbal':
             if (!isset($options['connection'])) {
                 throw new MetricsException('connection is required for Doctrine DBAL collector.');
             }
             return new Collector\DoctrineDBAL($options['connection']);
         case 'logger':
             if (!isset($options['logger'])) {
                 throw new MetricsException("Missing 'logger' key with logger service.");
             }
             return new Collector\Logger($options['logger']);
         case 'influxdb':
             if (!isset($options['client'])) {
                 throw new MetricsException('Missing \'client\' key for InfluxDB collector.');
             }
             return new Collector\InfluxDB($options['client']);
         case 'null':
             return new Collector\NullCollector();
         default:
             throw new MetricsException(sprintf('Unknown metrics collector given (%s).', $type));
     }
 }
示例#4
0
 public function flush()
 {
     $this->sender->send();
 }