newrelic / newrelic-telemetry-sdk-python

A python library to send data to New Relic!
https://newrelic.github.io/newrelic-telemetry-sdk-python/
Apache License 2.0
34 stars 27 forks source link

MetricAPI intermittently failing to upload #63

Open jacob-aegis opened 1 year ago

jacob-aegis commented 1 year ago

The following seems to fail during peaks in upload traffic, but we aren't hitting any API limits on our accound:

from newrelic_telemetry_sdk import MetricClient
metric_client = MetricClient(secrets['NEW_RELIC_LICENSE_KEY'])
metric = GaugeMetric("dummy_metric", {"Name":  "dummy})
response = metrics_client.send_batch([metric])
response.raise_for_status()

The exception typically is:

('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

I believe this is a UrlLib ConnectionPool error?

wonderingwombat commented 1 month ago

Seeing the same issue, during times with increased uploads. I have updated to the latest 0.5.1 version but this had no effect.

ERROR: newrelic_telemetry_sdk.harvester: New Relic send_batch failed with an exception.

Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
File "/usr/local/lib/python3.10/site-packages/newrelic/hooks/external_urllib3.py", line 26, in _nr_wrapper_make_request_
    return ExternalTraceWrapper(wrapped, "urllib3", url_for_apm_ui, method=method)(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/newrelic/api/external_trace.py", line 110, in literal_wrapper
    return wrapped(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 445, in _make_request
    six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 440, in _make_request
    httplib_response = conn.getresponse()
File "/usr/local/lib/python3.10/site-packages/newrelic/hooks/external_httplib.py", line 77, in httplib_getresponse_wrapper
    return wrapped(*args, **kwargs)
File "/usr/local/lib/python3.10/http/client.py", line 1375, in getresponse
    response.begin()
File "/usr/local/lib/python3.10/http/client.py", line 318, in begin
    version, status, reason = self._read_status()
File "/usr/local/lib/python3.10/http/client.py", line 287, in _read_status
    raise RemoteDisconnected("Remote end closed connection without response")
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/newrelic_telemetry_sdk/harvester.py", line 75, in _send
    response = self.client.send_batch(*flush_result)
File "/usr/local/lib/python3.10/site-packages/newrelic_telemetry_sdk/client.py", line 341, in send_batch
    return super(EventClient, self).send_batch(items, None, timeout=timeout)
File "/usr/local/lib/python3.10/site-packages/newrelic_telemetry_sdk/client.py", line 238, in send_batch
    return self._pool.urlopen(
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 755, in urlopen
    retries = retries.increment(
File "/usr/local/lib/python3.10/site-packages/urllib3/util/retry.py", line 507, in increment
    raise six.reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python3.10/site-packages/urllib3/packages/six.py", line 769, in reraise
    raise value.with_traceback(tb)
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 699, in urlopen
    httplib_response = self._make_request(
File "/usr/local/lib/python3.10/site-packages/newrelic/hooks/external_urllib3.py", line 26, in _nr_wrapper_make_request_
    return ExternalTraceWrapper(wrapped, "urllib3", url_for_apm_ui, method=method)(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/newrelic/api/external_trace.py", line 110, in literal_wrapper
    return wrapped(*args, **kwargs)
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 445, in _make_request
    six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/local/lib/python3.10/site-packages/urllib3/connectionpool.py", line 440, in _make_request
    httplib_response = conn.getresponse()
File "/usr/local/lib/python3.10/site-packages/newrelic/hooks/external_httplib.py", line 77, in httplib_getresponse_wrapper
    return wrapped(*args, **kwargs)
File "/usr/local/lib/python3.10/http/client.py", line 1375, in getresponse
    response.begin()
File "/usr/local/lib/python3.10/http/client.py", line 318, in begin
    version, status, reason = self._read_status()
File "/usr/local/lib/python3.10/http/client.py", line 287, in _read_status
    raise RemoteDisconnected("Remote end closed connection without response")
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')