diff --git a/http_check/changelog.d/23731.added b/http_check/changelog.d/23731.added new file mode 100644 index 0000000000000..c235626fccf57 --- /dev/null +++ b/http_check/changelog.d/23731.added @@ -0,0 +1 @@ +Add http_status_code tag to http metrics. diff --git a/http_check/datadog_checks/http_check/http_check.py b/http_check/datadog_checks/http_check/http_check.py index 776a61d08304d..157b83a181bc4 100644 --- a/http_check/datadog_checks/http_check/http_check.py +++ b/http_check/datadog_checks/http_check/http_check.py @@ -183,6 +183,9 @@ def send_status_down(loginfo, down_msg): raise else: + if r is not None: + http_status = r.status_code + tags_list.append("http_status_code:{}".format(http_status)) if use_cert_from_response: peer_cert = r.raw.connection.sock.getpeercert(binary_form=True) diff --git a/http_check/tests/test_http_integration.py b/http_check/tests/test_http_integration.py index cd927ca673615..e3a52268ef3f1 100644 --- a/http_check/tests/test_http_integration.py +++ b/http_check/tests/test_http_integration.py @@ -430,11 +430,16 @@ def test_data_methods(aggregator, http_check): url_tag = ['url:{}'.format(instance.get('url'))] instance_tag = ['instance:{}'.format(instance.get('name'))] + http_status_tag = ['http_status_code:{}'.format('200')] aggregator.assert_service_check(HTTPCheck.SC_STATUS, status=AgentCheck.OK, tags=url_tag + instance_tag, count=1) - aggregator.assert_metric('network.http.can_connect', tags=url_tag + instance_tag, value=1.0, count=1) - aggregator.assert_metric('network.http.cant_connect', tags=url_tag + instance_tag, value=0.0, count=1) - aggregator.assert_metric('network.http.response_time', tags=url_tag + instance_tag, count=1) + aggregator.assert_metric( + 'network.http.can_connect', tags=url_tag + instance_tag + http_status_tag, value=1.0, count=1 + ) + aggregator.assert_metric( + 'network.http.cant_connect', tags=url_tag + instance_tag + http_status_tag, value=0.0, count=1 + ) + aggregator.assert_metric('network.http.response_time', tags=url_tag + instance_tag + http_status_tag, count=1) # Assert coverage for this check on this instance aggregator.assert_all_metrics_covered()