/** * 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.'); } }
function _addData(\Net\Zabbix\Sender $sender) { $sender->addData("hostname1", "key1", "value1"); $sender->addData("hostname2", "key2", "value2"); $sender->addData("hostname3", "key3", "value3", 1234567890); }
/** * 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)); } }
public function flush() { $this->sender->send(); }