#include "control/control.h"
#include "helpers/json_stream.h"
#include "main/snort_config.h"
-#include "utils/stats.h"
#include "profiler_printer.h"
#include "rule_profiler.h"
std::ostringstream ss;
JsonStream json(ss);
- RuleContext::set_end_time(get_time_curr());
RuleContext::count_total_time();
- double start_time_usec =
- RuleContext::get_start_time()->tv_sec * 1000000.0 + RuleContext::get_start_time()->tv_usec;
- double end_time_usec =
- RuleContext::get_end_time()->tv_sec * 1000000.0 + RuleContext::get_end_time()->tv_usec;
- double total_time_usec =
- RuleContext::get_total_time()->tv_sec * 1000000.0 + RuleContext::get_total_time()->tv_usec;
-
json.open();
- json.put("startTime", start_time_usec);
- json.put("endTime", end_time_usec);
+ json.put("startTime", RuleContext::get_start_time()->tv_sec);
+ json.put("endTime", RuleContext::get_end_time()->tv_sec);
json.open_array("rules");
json.put_eol();
if ( sort )
std::partial_sort(entries.begin(), entries.begin() + count, entries.end(), sort);
+ double total_time_usec =
+ RuleContext::get_total_time()->tv_sec * 1000000.0 + RuleContext::get_total_time()->tv_usec;
+
for ( unsigned i = 0; i < count; ++i )
print_single_entry(ctrlcon, entries[i], i + 1, count, total_time_usec);
#include "main/snort.h"
#include "main/snort_config.h"
#include "managers/module_manager.h"
+#include "utils/stats.h"
#include "rule_profiler.h"
#include "rule_profiler_defs.h"
const auto* config = SnortConfig::get_conf()->get_profiler();
assert(config);
+ RuleContext::set_end_time(get_time_curr());
print_rule_profiler_stats(config->rule, stats, ctrlcon, out_type);
}
}
RuleContext::set_enabled(true);
+ RuleContext::set_start_time(get_time_curr());
main_broadcast_command(new ProfilerControl(ProfilerControl::CommandType::ENABLE), ctrlcon);
main_broadcast_command(new ProfilerRuleReset(), ctrlcon);
LogRespond(ctrlcon, "Rule profiler started\n");
}
RuleContext::set_enabled(false);
+ RuleContext::set_end_time(get_time_curr());
main_broadcast_command(new ProfilerControl(ProfilerControl::CommandType::DISABLE), ctrlcon);
LogRespond(ctrlcon, "Rule profiler stopped\n");
static const Parameter profiler_dump_params[] =
{
{ "output", Parameter::PT_ENUM, "table | json",
- "table", "print rule statistics in table or json format" },
+ "table", "output format for rule statistics" },
{ nullptr, Parameter::PT_MAX, nullptr, nullptr, nullptr }
};
nullptr, "print rule profiler status" },
{ "rule_dump", rule_profiling_dump,
- profiler_dump_params, "print rule statistics" },
+ profiler_dump_params, "print rule statistics in table or json format (json format prints dates as Unix epoch)" },
{ nullptr, nullptr, nullptr, nullptr }
};
#include "control/control.h"
#include "detection/treenodes.h"
-#include "utils/stats.h"
#include "profiler_printer.h"
#include "profiler_stats_table.h"
ProfilerSorter<rule_stats::View>& sort, unsigned count)
{
std::ostringstream ss;
- RuleContext::set_end_time(get_time_curr());
RuleContext::count_total_time();
double total_time_usec =