static void om_kafka_write(nx_module_t *module) {
	nx_om_kafka_conf_t* modconf;
	modconf = (nx_om_kafka_conf_t*) module->config;
	nx_logdata_t *logdata;
	if (nx_module_get_status(module) != NX_MODULE_STATUS_RUNNING) {
		log_warn("Kafka module not running.");
		return;
	}

	if (module->output.buflen == 0) {
		if ((logdata = nx_module_logqueue_peek(module)) != NULL) {
			module->output.logdata = logdata;
			if (rd_kafka_produce(modconf->rkt, modconf->partition, RD_KAFKA_MSG_F_COPY,
					/* Payload and length */
					logdata->raw_event->buf, (int) logdata->raw_event->len,
					/* Optional key and its length */
					NULL, 0,
					/* Message opaque, provided in delivery report callback as msg_opaque. */
					NULL) == -1) {
				log_error("Unable to produce message");
				rd_kafka_poll(modconf->rk, 0);
			} else {
				//TODO: report on message
				log_debug("Message sent");
				rd_kafka_poll(modconf->rk, 0);
				nx_module_logqueue_pop(module, module->output.logdata);
				nx_logdata_free(module->output.logdata);
				module->output.logdata = NULL;
			}
		}
	}
}
예제 #2
0
static nx_logdata_t *nx_patterndb_pattern_exec(nx_module_t *module,
					       nx_logdata_t *logdata,
					       nx_pattern_t *pattern)
{
    nx_expr_eval_ctx_t eval_ctx;
    nx_exception_t e;

    nx_expr_eval_ctx_init(&eval_ctx, logdata, module, NULL);
    try
    {
	nx_expr_statement_list_execute(&eval_ctx, pattern->exec);
    }
    catch(e)
    {
	log_exception(e);
    }
    if ( eval_ctx.logdata == NULL )
    { // dropped
	nx_module_logqueue_pop(module, logdata);
	nx_logdata_free(logdata);
    }
    logdata = eval_ctx.logdata;
    nx_expr_eval_ctx_destroy(&eval_ctx);

    return ( logdata );
}
예제 #3
0
static nx_logdata_t *pm_norepeat_process(nx_module_t *module, nx_logdata_t *logdata)
{
    nx_pm_norepeat_conf_t *modconf;
 
    ASSERT ( logdata != NULL );

    modconf = (nx_pm_norepeat_conf_t *) module->config;

    log_debug("nx_pm_norepeat_process()");

    //log_debug("processing: [%s]", logdata->data);

    if ( modconf->logdata == NULL )
    {
	modconf->logdata = nx_logdata_clone(logdata);
    }
    else
    {
	if ( nx_logdata_eq(modconf, modconf->logdata, logdata) == TRUE )
	{
	    (modconf->repeatcnt)++;
	    pm_norepeat_add_event(module);
	    nx_module_logqueue_pop(module, logdata);
	    nx_logdata_free(logdata);
	    return ( NULL );
	}
	else
	{
	    pm_norepeat_log_repeat(module);
	    ASSERT(modconf->logdata == NULL);
	    modconf->logdata = nx_logdata_clone(logdata);
	    modconf->repeatcnt = 0;
	}
    }

    return ( logdata );
}