/* TODO
* Remove all settings but `-f' and `-C'
*/
-static void exit_usage (void)
+static void exit_usage (int status)
{
printf ("Usage: "PACKAGE" [OPTIONS]\n\n"
"\n"PACKAGE" "VERSION", http://collectd.org/\n"
"by Florian octo Forster <octo@verplant.org>\n"
"for contributions see `AUTHORS'\n");
- exit (0);
-} /* static void exit_usage (char *name) */
+ exit (status);
+} /* static void exit_usage (int status) */
static int do_init (void)
{
break;
#endif /* COLLECT_DAEMON */
case 'h':
+ exit_usage (0);
+ break;
default:
- exit_usage ();
+ exit_usage (1);
} /* switch (c) */
} /* while (1) */
+ if (optind < argc)
+ exit_usage (1);
+
/*
* Read options from the config file, the environment and the command
* line (in that order, with later options overwriting previous ones in
# <Match>
# Regex "\\<R=local_user\\>"
# DSType "CounterInc"
-# Type "email_count"
+# Type "counter"
# Instance "local_user"
# </Match>
# </File>
connection is interrupted for whatever reason it will try to re-connect. The
plugin will complaint loudly in case anything goes wrong.
-This plugin issues C<SHOW STATUS> and evaluates C<Bytes_{received,sent}>,
-C<Com_*> and C<Handler_*> which correspond to F<mysql_octets.rrd>,
-F<mysql_commands-*.rrd> and F<mysql_handler-*.rrd>. Also, the values of
-C<Qcache_*> are put in F<mysql_qcache.rrd> and values of C<Threads_*> are put
-in F<mysql_threads.rrd>. Please refer to the B<MySQL reference manual>,
-I<5.2.4. Server Status Variables> for an explanation of these values.
+This plugin issues the MySQL C<SHOW STATUS> command and collects information
+about MySQL network traffic, executed statements, requests, the query cache
+and threads by evaluating the C<Bytes_{received,sent}>, C<Com_*>,
+C<Handler_*>, C<Qcache_*> and C<Threads_*> return values. Please refer to the
+B<MySQL reference manual>, I<5.1.6. Server Status Variables> for an
+explanation of these values.
Use the following options to configure the plugin:
=item B<User> I<Username>
-Username to use when connecting to the database.
+Username to use when connecting to the database. The user does not have to be
+granted any privileges (which is synonym to granting the C<USAGE> privilege).
+Any existing MySQL user will do.
=item B<Password> I<Password>
<File "/var/log/exim4/mainlog">
Instance "exim"
<Match>
- Regex "S=([1-9][0-9]*)"
- DSType "CounterAdd"
- Type "ipt_bytes"
- Instance "total"
+ Regex "S=([1-9][0-9]*)"
+ DSType "CounterAdd"
+ Type "ipt_bytes"
+ Instance "total"
</Match>
<Match>
- Regex "\\<R=local_user\\>"
- DSType "CounterInc"
- Type "counter"
- Instance "local_user"
+ Regex "\\<R=local_user\\>"
+ DSType "CounterInc"
+ Type "counter"
+ Instance "local_user"
</Match>
</File>
</Plugin>
<Plugin "memory">
<Type "memory">
Instance "cached"
- WarningMin 100000000
+ WarningMin 100000000
</Type>
</Plugin>
</Host>
#else
if (ksp == NULL)
{
- fprintf (stderr, "ERROR: %s:%i: ksp == NULL\n", __FILE__, __LINE__);
+ ERROR ("ERROR: %s:%i: ksp == NULL\n", __FILE__, __LINE__);
return (-1LL);
}
else if (ksp->ks_type != KSTAT_TYPE_NAMED)
{
- fprintf (stderr, "ERROR: %s:%i: ksp->ks_type != KSTAT_TYPE_NAMED\n", __FILE__, __LINE__);
+ ERROR ("ERROR: %s:%i: ksp->ks_type != KSTAT_TYPE_NAMED\n", __FILE__, __LINE__);
return (-1LL);
}
#endif
fprintf (stderr, "email plugin: `MaxConns' was set to invalid "
"value %li, will use default %i.\n",
tmp, MAX_CONNS);
+ ERROR ("email plugin: `MaxConns' was set to invalid "
+ "value %li, will use default %i.\n",
+ tmp, MAX_CONNS);
max_conns = MAX_CONNS;
}
else if (tmp > MAX_CONNS_LIMIT) {
fprintf (stderr, "email plugin: `MaxConns' was set to invalid "
"value %li, will use hardcoded limit %i.\n",
tmp, MAX_CONNS_LIMIT);
+ ERROR ("email plugin: `MaxConns' was set to invalid "
+ "value %li, will use hardcoded limit %i.\n",
+ tmp, MAX_CONNS_LIMIT);
max_conns = MAX_CONNS_LIMIT;
}
else {
{
int status;
- printf ("domain_connection_change_handler (domain = %p, err = %i, "
+ DEBUG ("domain_connection_change_handler (domain = %p, err = %i, "
"conn_num = %u, port_num = %u, still_connected = %i, "
"user_data = %p);\n",
(void *) domain, err, conn_num, port_num, still_connected, user_data);
status = thread_init (&os_handler);
if (status != 0)
{
- fprintf (stderr, "ipmi plugin: thread_init failed.\n");
+ ERROR ("ipmi plugin: thread_init failed.\n");
return ((void *) -1);
}
{
fprintf (stderr, "rrdtool: `CacheTimeout' must "
"be greater than 0.\n");
+ ERROR ("rrdtool: `CacheTimeout' must "
+ "be greater than 0.\n");
return (1);
}
cache_timeout = tmp;
{
fprintf (stderr, "rrdtool: `CacheFlush' must "
"be greater than 0.\n");
+ ERROR ("rrdtool: `CacheFlush' must "
+ "be greater than 0.\n");
return (1);
}
cache_flush_timeout = tmp;
{
fprintf (stderr, "rrdtool: `RRARows' must "
"be greater than 0.\n");
+ ERROR ("rrdtool: `RRARows' must "
+ "be greater than 0.\n");
return (1);
}
rrarows = tmp;
if (tmp_alloc == NULL)
{
fprintf (stderr, "rrdtool: realloc failed.\n");
+ ERROR ("rrdtool: realloc failed.\n");
free (value_copy);
return (1);
}
{
fprintf (stderr, "rrdtool: `XFF' must "
"be in the range 0 to 1 (exclusive).");
+ ERROR ("rrdtool: `XFF' must "
+ "be in the range 0 to 1 (exclusive).");
return (1);
}
xff = tmp;
static int us_init (void)
{
+ static int have_init = 0;
+
int status;
+ /* Initialize only once. */
+ if (have_init != 0)
+ return (0);
+ have_init = 1;
+
loop = 1;
status = pthread_create (&listen_thread, NULL, us_server_thread, NULL);
*/
#include "collectd.h"
+#include "plugin.h"
#include "common.h"
#if HAVE_NETINET_IN_SYSTM_H
memcpy(&us, buf + 2, 2);
us = ntohs(us);
- fprintf (stderr, "Bytes 0, 1: 0x%04hx\n", us);
qh.qr = (us >> 15) & 0x01;
qh.opcode = (us >> 11) & 0x0F;
qh.aa = (us >> 10) & 0x01;
{
int status;
- fprintf (stderr, "handle_pcap (udata = %p, hdr = %p, pkt = %p): hdr->caplen = %i\n",
+ DEBUG ("handle_pcap (udata = %p, hdr = %p, pkt = %p): hdr->caplen = %i\n",
(void *) udata, (void *) hdr, (void *) pkt,
hdr->caplen);
break;
default:
- fprintf (stderr, "unsupported data link type %d\n",
+ ERROR ("handle_pcap: unsupported data link type %d\n",
pcap_datalink(pcap_obj));
status = 0;
break;