Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions appsec/src/extension/helper_process.c
Original file line number Diff line number Diff line change
Expand Up @@ -152,13 +152,13 @@ dd_conn *nullable dd_helper_mgr_acquire_conn(

_mgr.connected_this_req = true;
_release_shared_state_lock(&_mgr.hss);
dd_telemetry_helper_conn_success(_mgr.socket_path);
dd_telemetry_helper_conn_success();

return conn;

error:
_inc_failed_counter(&_mgr.hss);
dd_telemetry_helper_conn_error(_mgr.socket_path);
dd_telemetry_helper_conn_error();
return NULL;
}

Expand Down Expand Up @@ -265,7 +265,7 @@ void dd_helper_close_conn(void)
mlog_err(dd_log_warning, "Error closing connection to helper");
}

dd_telemetry_helper_conn_close(_mgr.socket_path);
dd_telemetry_helper_conn_close();

/* we treat closing the connection on the request it was opened a failure
* for the purposes of the connection backoff */
Expand Down
19 changes: 10 additions & 9 deletions appsec/src/extension/telemetry.c
Original file line number Diff line number Diff line change
Expand Up @@ -49,32 +49,33 @@ void dd_telemetry_add_sdk_event(char *nonnull event_type, size_t event_type_len)
free(tags);
}

static void _add_helper_conn_metric(
zend_string *nonnull name_zstr, const char *nonnull socket_path)
static void _add_helper_conn_metric(zend_string *nonnull name_zstr)
{
if (get_global_DD_APPSEC_TESTING() &&
!get_global_DD_APPSEC_TESTING_HELPER_METRICS()) {
return;
}
zend_string *runtime_path = get_DD_APPSEC_HELPER_RUNTIME_PATH();
char *tags = NULL;
size_t tags_len = spprintf(&tags, 0, "socket:%s", socket_path);
size_t tags_len =
spprintf(&tags, 0, "runtime_path:%s", ZSTR_VAL(runtime_path));
zend_string *tags_zstr = zend_string_init(tags, tags_len, 0);
dd_telemetry_add_metric(name_zstr, 1, tags_zstr, DDTRACE_METRIC_TYPE_COUNT);
zend_string_release(tags_zstr);
efree(tags);
}

void dd_telemetry_helper_conn_error(const char *nonnull socket_path)
void dd_telemetry_helper_conn_error(void)
{
_add_helper_conn_metric(_dd_helper_conn_error_zstr, socket_path);
_add_helper_conn_metric(_dd_helper_conn_error_zstr);
}

void dd_telemetry_helper_conn_success(const char *nonnull socket_path)
void dd_telemetry_helper_conn_success(void)
{
_add_helper_conn_metric(_dd_helper_conn_success_zstr, socket_path);
_add_helper_conn_metric(_dd_helper_conn_success_zstr);
}

void dd_telemetry_helper_conn_close(const char *nonnull socket_path)
void dd_telemetry_helper_conn_close(void)
{
_add_helper_conn_metric(_dd_helper_conn_close_zstr, socket_path);
_add_helper_conn_metric(_dd_helper_conn_close_zstr);
}
6 changes: 3 additions & 3 deletions appsec/src/extension/telemetry.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ void dd_telemetry_add_metric(zend_string *nonnull name_zstr, double value,
void dd_telemetry_add_sdk_event(char *nonnull event_type, size_t event_type_len);
void dd_telemetry_startup(void);

void dd_telemetry_helper_conn_error(const char *nonnull socket_path);
void dd_telemetry_helper_conn_success(const char *nonnull socket_path);
void dd_telemetry_helper_conn_close(const char *nonnull socket_path);
void dd_telemetry_helper_conn_error(void);
void dd_telemetry_helper_conn_success(void);
void dd_telemetry_helper_conn_close(void);
Original file line number Diff line number Diff line change
Expand Up @@ -95,14 +95,16 @@ class TelemetryTests {
TelemetryHelpers.Metric wafInit
TelemetryHelpers.Metric wafReq1
TelemetryHelpers.Metric wafReq2
TelemetryHelpers.Metric connSuccess

waitForMetrics(30) { List<TelemetryHelpers.GenerateMetrics> messages ->
def allSeries = messages.collectMany { it.series }
wafInit = allSeries.find { it.name == 'waf.init' }
wafReq1 = allSeries.find { it.name == 'waf.requests' && it.tags.size() == 2 }
wafReq2 = allSeries.find { it.name == 'waf.requests' && it.tags.size() == 3 }
connSuccess = allSeries.find { it.name == 'helper.connection_success' }

wafInit && wafReq1 && wafReq2
wafInit && wafReq1 && wafReq2 && connSuccess
}

assert wafInit != null
Expand All @@ -123,6 +125,12 @@ class TelemetryTests {
assert wafReq2 != null
assert 'rule_triggered:true' in wafReq2.tags
assert wafReq2.points[0][1] >= 1.0

assert connSuccess != null
assert connSuccess.namespace == 'appsec'
assert connSuccess.points[0][1] >= 1.0
assert connSuccess.tags.find { it.startsWith('runtime_path:') } != null
assert connSuccess.type == 'count'
}

@Test
Expand Down
Loading