Browse Source

[Feature] Periodically save rspamd stats to disk

Issue: #1823
tags/1.7.0
Vsevolod Stakhov 6 years ago
parent
commit
41f51d1a12
1 changed files with 18 additions and 0 deletions
  1. 18
    0
      src/controller.c

+ 18
- 0
src/controller.c View File

@@ -178,6 +178,7 @@ struct rspamd_controller_worker_ctx {

struct event *rrd_event;
struct rspamd_rrd_file *rrd;
struct event save_stats_event;
};

struct rspamd_controller_plugin_cbdata {
@@ -3206,6 +3207,14 @@ rspamd_controller_store_saved_stats (struct rspamd_controller_worker_ctx *ctx)
close (fd);
}

static void
rspamd_controller_stats_save_periodic (int fd, short what, gpointer ud)
{
struct rspamd_controller_worker_ctx *ctx = ud;

rspamd_controller_store_saved_stats (ctx);
}

static void
rspamd_controller_password_sane (struct rspamd_controller_worker_ctx *ctx,
const gchar *password, const gchar *type)
@@ -3603,6 +3612,8 @@ start_controller_worker (struct rspamd_worker *worker)
GHashTableIter iter;
gpointer key, value;
struct rspamd_keypair_cache *cache;
struct timeval stv;
const guint save_stats_interval = 60 * 1000; /* 1 minute */
gpointer m;

ctx->ev_base = rspamd_prepare_worker (worker,
@@ -3805,6 +3816,13 @@ start_controller_worker (struct rspamd_worker *worker)

rspamd_lua_run_postloads (ctx->cfg->lua_state, ctx->cfg, ctx->ev_base, worker);

/* Schedule periodic stats saving, see #1823 */
evtimer_set (&ctx->save_stats_event, rspamd_controller_stats_save_periodic,
ctx);
event_base_set (ctx->ev_base, &ctx->save_stats_event);
msec_to_tv (save_stats_interval, &stv);
evtimer_add (&ctx->save_stats_event, &stv);

/* Start event loop */
event_base_loop (ctx->ev_base, 0);
rspamd_worker_block_signals ();

Loading…
Cancel
Save