int main(void) { statsd_t *link, *link2; link = statsd_init("127.0.0.1", 8125); assert(statsd_count(link, "count1", 123, 1.0) == 0); link2 = statsd_init_with_namespace("127.0.0.1", 8125, "mynamespace"); assert(statsd_count(link, "count2", 125, 1.0) == 0); assert(statsd_gauge(link, "speed", 10) == 0); assert(statsd_timing(link2, "request", 2400) == 0); sleep(1); assert(statsd_inc(link, "count1", 1.0) == 0); assert(statsd_dec(link2, "count2", 1.0) == 0); int i; for (i=0; i<10; i++) { assert(statsd_count(link2, "count3", i, 0.8) == 0); } statsd_finalize(link); statsd_finalize(link2); return 0; }
/* * Called when the LFS module is deactivated. */ int lfs_deactivate(void) { globus_extension_registry_remove(GLOBUS_GFS_DSI_REGISTRY, "lfs"); STATSD_COUNT("deactivate",1); if (lfs_statsd_link != NULL) { statsd_finalize(lfs_statsd_link); lfs_statsd_link = NULL; } return 0; }
int main(void) { statsd_init("127.0.0.1", 8125); statsd_count("count1", 123, 1.0); statsd_init_with_namespace("127.0.0.1", 8125, "mynamespace"); statsd_count("count2", 125, 1.0); statsd_gauge("speed", 10); statsd_timing("request", 2400); sleep(1); statsd_inc("count1", 1.0); statsd_dec("count2", 1.0); int i; for(i=0; i<10; i++) { statsd_count("count3", i, 0.8); } statsd_finalize(); return 0; }
int main(int argc, char *argv[]) { char *metric_name = NULL; int c; char *statsd_host = STATSD_DEFAULT_HOST; int statsd_port = STATSD_DEFAULT_PORT; char *gearmand_host = GEARMAND_DEFAULT_HOST; int gearmand_port = GEARMAND_DEFAULT_PORT; int debug = 0; int foreground = 0; int polling_interval = DEFAULT_POLLING_INTERVAL; while ((c = getopt (argc, argv, "e:dvifH:t::P::h:p::N:")) != -1) { switch (c) { case '?': showHelp(); return 0; break; case 'N': metric_name = malloc(strlen(optarg)); strcpy(metric_name, optarg); break; case 'h': statsd_host = malloc(strlen(optarg)); strcpy(statsd_host, optarg); break; case 'p': statsd_port = atoi(optarg); break; case 'H': gearmand_host = malloc(strlen(optarg)); strcpy(gearmand_host, optarg); break; case 'P': gearmand_port = atoi(optarg); break; case 't': polling_interval = atoi(optarg); break; case 'f': foreground = 1; break; case 'd': debug = 1; break; default: showHelp(); return 1; break; } } if (metric_name == NULL) { fprintf(stderr, "%s: missing -N option\n", argv[0]); showHelp(); return 1; } if (debug) { setlogmask(LOG_UPTO(LOG_INFO)); openlog("statsd-gearmand-monitor", LOG_CONS | LOG_NDELAY | LOG_PERROR | LOG_PID, LOG_USER); syslog(LOG_INFO, "statsd host: %s:%d", statsd_host, statsd_port); syslog(LOG_INFO, "metric name: %s", metric_name); syslog(LOG_INFO, "polling interval: %d secs", polling_interval); syslog(LOG_INFO, "gearmand host: %s:%d", gearmand_host, gearmand_port); } signal(SIGHUP, SIG_IGN); signal(SIGPIPE, SIG_IGN); signal(SIGCHLD, SIG_IGN); signal(SIGTERM, sigterm); int sockfd = 0, n = 0; char recvBuff[1024]; struct sockaddr_in gearmand_serv_addr; memset(recvBuff, '0',sizeof(recvBuff)); if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("error: could not create socket \n"); return 1; } /* resolve hostname */ struct hostent * he; if ((he = gethostbyname(gearmand_host)) == NULL) { perror("error: could not resolve host\n"); return 1; } memset(&gearmand_serv_addr, '0', sizeof(gearmand_serv_addr)); gearmand_serv_addr.sin_family = AF_INET; gearmand_serv_addr.sin_port = htons(gearmand_port); if(memcpy(&gearmand_serv_addr.sin_addr, he->h_addr_list[0], he->h_length) <= 0) { perror("error: memcpy error occured\n"); return 1; } if (!foreground) { if (debug) { syslog(LOG_INFO, "sending process to background"); } daemon(0, 0); } statsd_link *_statsd_link; _statsd_link = statsd_init_with_namespace(statsd_host, statsd_port, metric_name); while(running) { if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("error : could not create socket \n"); return 1; } if( connect(sockfd, (struct sockaddr *)&gearmand_serv_addr, sizeof(gearmand_serv_addr)) < 0) { perror("error: connect Failed to gearmand \n"); return 1; } write(sockfd, "status\n", strlen("status\n")); while ( (n = read(sockfd, recvBuff, sizeof(recvBuff)-1)) > 0) { recvBuff[n] = 0; if (recvBuff[n - 2] == '.' && recvBuff[n - 1] == '\n') { recvBuff[n - 2] = 0; break; } } close(sockfd); char * pch; pch = strtok (recvBuff, "\n"); while (pch != NULL) { char function_name[1024]; char * _metric_name = NULL; int queued, running, connected; sscanf(pch, "%s\t%d\t%d\t%d", function_name, &queued, &running, &connected); _metric_name = _forge_metric_name(function_name, "connected"); statsd_gauge(_statsd_link, _metric_name, connected); free(_metric_name); _metric_name = _forge_metric_name(function_name, "queued"); statsd_gauge(_statsd_link, _metric_name , queued); free(_metric_name); _metric_name = _forge_metric_name(function_name, "running"); statsd_gauge(_statsd_link, _metric_name, running); free(_metric_name); if (debug) { syslog(LOG_INFO, "function %s has a total of %d queued jobs - %d workers running - %d workers connected\n", function_name, queued, running, connected); } pch = strtok (NULL, "\n"); } sleep(polling_interval); } statsd_finalize(_statsd_link); return 0; }