From: Frank Ch. Eigler Date: Thu, 26 Mar 2020 20:44:20 +0000 (-0400) Subject: PR25448: debuginfod: add transfer performance metrics X-Git-Tag: elfutils-0.179~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0b9eb740eb8cd86ce3bffd0278135eba98c2e8a2;p=thirdparty%2Felfutils.git PR25448: debuginfod: add transfer performance metrics We now export metrics related to the time taken and data sent, from which prometheus type tools can compute nice time series with averages. http_responses_duration_milliseconds_count{code="200"} 63 http_responses_duration_milliseconds_count{code="404"} 2 http_responses_duration_milliseconds_count{code="503"} 1 http_responses_duration_milliseconds_sum{code="200"} 66 http_responses_duration_milliseconds_sum{code="404"} 2 http_responses_duration_milliseconds_sum{code="503"} 0 http_responses_transfer_bytes_count{code="200"} 63 http_responses_transfer_bytes_count{code="404"} 2 http_responses_transfer_bytes_count{code="503"} 1 http_responses_transfer_bytes_sum{code="200"} 425177 http_responses_transfer_bytes_sum{code="404"} 18 http_responses_transfer_bytes_sum{code="503"} 37 Signed-off-by: Frank Ch. Eigler --- diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog index 58ba85cf3..989a90295 100644 --- a/debuginfod/ChangeLog +++ b/debuginfod/ChangeLog @@ -1,3 +1,8 @@ +2020-03-26 Frank Ch. Eigler + + * debuginfod.cxx (handler_cb): Export two families of metrics for + prometheus traffic analysis: response times and data amounts. + 2020-03-26 Frank Ch. Eigler * debuginfod.cxx (parse_opt): For -U, prefer dpkg-deb diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx index 9e8d55609..98491c2c6 100644 --- a/debuginfod/debuginfod.cxx +++ b/debuginfod/debuginfod.cxx @@ -1767,6 +1767,7 @@ handler_cb (void * /*cls*/, inc_metric("http_responses_total","result","error"); e.report(clog); http_code = e.code; + http_size = e.message.size(); rc = e.mhd_send_response (connection); } @@ -1778,6 +1779,17 @@ handler_cb (void * /*cls*/, << ' ' << (int)(deltas*1000) << "ms" << endl; + // related prometheus metrics + string http_code_str = to_string(http_code); + if (http_size >= 0) + add_metric("http_responses_transfer_bytes_sum","code",http_code_str, + http_size); + inc_metric("http_responses_transfer_bytes_count","code",http_code_str); + + add_metric("http_responses_duration_milliseconds_sum","code",http_code_str, + deltas*1000); // prometheus prefers _seconds and floating point + inc_metric("http_responses_duration_milliseconds_count","code",http_code_str); + return rc; } diff --git a/tests/ChangeLog b/tests/ChangeLog index c06d89244..ba88ecf6a 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +2020-03-26 Frank Ch. Eigler + + * run-debuginfod-find.sh: Look for debuginfod's new + http_responses_* metrics. + 2020-03-26 Frank Ch. Eigler * run-debuginfod-find.sh: Look for bsdtar instead of dpkg. diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh index cc826f960..db36420f7 100755 --- a/tests/run-debuginfod-find.sh +++ b/tests/run-debuginfod-find.sh @@ -416,6 +416,10 @@ curl -s http://127.0.0.1:$PORT2/metrics curl -s http://127.0.0.1:$PORT1/metrics | grep -q 'http_responses_total.*result.*error' curl -s http://127.0.0.1:$PORT1/metrics | grep -q 'http_responses_total.*result.*fdcache' curl -s http://127.0.0.1:$PORT2/metrics | grep -q 'http_responses_total.*result.*upstream' +curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_duration_milliseconds_count' +curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_duration_milliseconds_sum' +curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_transfer_bytes_count' +curl -s http://127.0.0.1:$PORT1/metrics | grep 'http_responses_transfer_bytes_sum' # And generate a few errors into the second debuginfod's logs, for analysis just below curl -s http://127.0.0.1:$PORT2/badapi > /dev/null || true