mirror of
https://github.com/falcosecurity/falco.git
synced 2025-06-29 08:07:24 +00:00
chore(userspace/falco): configurable outputs timeout
Signed-off-by: Leonardo Grasso <me@leonardograsso.com>
This commit is contained in:
parent
4b34b83739
commit
321da3e5bf
@ -972,6 +972,7 @@ int falco_init(int argc, char **argv)
|
|||||||
|
|
||||||
outputs->init(config.m_json_output,
|
outputs->init(config.m_json_output,
|
||||||
config.m_json_include_output_property,
|
config.m_json_include_output_property,
|
||||||
|
config.m_output_timeout,
|
||||||
config.m_notifications_rate, config.m_notifications_max_burst,
|
config.m_notifications_rate, config.m_notifications_max_burst,
|
||||||
config.m_buffered_outputs,
|
config.m_buffered_outputs,
|
||||||
config.m_time_format_iso_8601,
|
config.m_time_format_iso_8601,
|
||||||
|
@ -62,9 +62,10 @@ falco_outputs::~falco_outputs()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void falco_outputs::init(bool json_output,
|
void falco_outputs::init(bool json_output,
|
||||||
bool json_include_output_property,
|
bool json_include_output_property,
|
||||||
uint32_t rate, uint32_t max_burst, bool buffered,
|
uint32_t timeout,
|
||||||
bool time_format_iso_8601, string hostname)
|
uint32_t rate, uint32_t max_burst, bool buffered,
|
||||||
|
bool time_format_iso_8601, std::string hostname)
|
||||||
{
|
{
|
||||||
// Cannot be initialized more than one time.
|
// Cannot be initialized more than one time.
|
||||||
if(m_initialized)
|
if(m_initialized)
|
||||||
@ -80,6 +81,8 @@ void falco_outputs::init(bool json_output,
|
|||||||
falco_formats::s_json_output = json_output;
|
falco_formats::s_json_output = json_output;
|
||||||
falco_formats::s_json_include_output_property = json_include_output_property;
|
falco_formats::s_json_include_output_property = json_include_output_property;
|
||||||
|
|
||||||
|
m_timeout = std::chrono::milliseconds(timeout);
|
||||||
|
|
||||||
m_notifications_tb.init(rate, max_burst);
|
m_notifications_tb.init(rate, max_burst);
|
||||||
|
|
||||||
m_buffered = buffered;
|
m_buffered = buffered;
|
||||||
@ -275,11 +278,12 @@ inline void falco_outputs::push(ctrl_msg_type cmt)
|
|||||||
void falco_outputs::worker()
|
void falco_outputs::worker()
|
||||||
{
|
{
|
||||||
Watchdog<std::string> wd;
|
Watchdog<std::string> wd;
|
||||||
|
|
||||||
wd.start([&](std::string payload) -> void {
|
wd.start([&](std::string payload) -> void {
|
||||||
falco_logger::log(LOG_CRIT, "\"" + payload + "\" output deadline exceeded, all output channels are blocked.\n");
|
falco_logger::log(LOG_CRIT, "\"" + payload + "\" output timeout, all output channels are blocked.\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
auto timeout = m_timeout;
|
||||||
|
|
||||||
falco_outputs::ctrl_msg cmsg;
|
falco_outputs::ctrl_msg cmsg;
|
||||||
while(true)
|
while(true)
|
||||||
{
|
{
|
||||||
@ -291,7 +295,7 @@ void falco_outputs::worker()
|
|||||||
|
|
||||||
for(auto it = m_outputs.cbegin(); it != m_outputs.cend(); ++it)
|
for(auto it = m_outputs.cbegin(); it != m_outputs.cend(); ++it)
|
||||||
{
|
{
|
||||||
wd.set_timeout(std::chrono::milliseconds(2000), (*it)->get_name());
|
wd.set_timeout(timeout, (*it)->get_name());
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
switch(cmsg.type)
|
switch(cmsg.type)
|
||||||
|
@ -40,6 +40,7 @@ public:
|
|||||||
|
|
||||||
void init(bool json_output,
|
void init(bool json_output,
|
||||||
bool json_include_output_property,
|
bool json_include_output_property,
|
||||||
|
uint32_t timeout,
|
||||||
uint32_t rate, uint32_t max_burst, bool buffered,
|
uint32_t rate, uint32_t max_burst, bool buffered,
|
||||||
bool time_format_iso_8601, std::string hostname);
|
bool time_format_iso_8601, std::string hostname);
|
||||||
|
|
||||||
@ -71,6 +72,7 @@ private:
|
|||||||
bool m_buffered;
|
bool m_buffered;
|
||||||
bool m_json_output;
|
bool m_json_output;
|
||||||
bool m_time_format_iso_8601;
|
bool m_time_format_iso_8601;
|
||||||
|
std::chrono::milliseconds m_timeout;
|
||||||
std::string m_hostname;
|
std::string m_hostname;
|
||||||
|
|
||||||
enum ctrl_msg_type
|
enum ctrl_msg_type
|
||||||
|
Loading…
Reference in New Issue
Block a user