HTTP¶
Whenever you need to make HTTP requests, the base class provides a convenience member that has the same interface as the popular requests library and ensures consistent behavior across all integrations.
The wrapper automatically parses and uses configuration from the instance
, init_config
, and Agent config. Also, this is only done once during initialization and cached to reduce the overhead of every call.
For example, to make a GET request you would use:
response = self.http.get(url)
and the wrapper will pass the right things to requests
. All methods accept optional keyword arguments like stream
, etc.
Any method-level option will override configuration. So for example if tls_verify
was set to false and you do self.http.get(url, verify=True)
, then SSL certificates will be verified on that particular request. You can use the keyword argument persist
to override persist_connections
.
There is also support for non-standard or legacy configurations with the HTTP_CONFIG_REMAPPER
class attribute. For example:
class MyCheck(AgentCheck):
HTTP_CONFIG_REMAPPER = {
'disable_ssl_validation': {
'name': 'tls_verify',
'default': False,
'invert': True,
},
...
}
...
Support for Unix socket is provided via requests-unixsocket and allows making UDS requests on the unix://
scheme (not supported on Windows until Python adds support for AF_UNIX
, see ticket):
url = 'unix:///var/run/docker.sock'
response = self.http.get(url)
Options¶
Some options can be set globally in init_config
(with instances
taking precedence). For complete documentation of every option, see the associated configuration templates for the instances and init_config sections.
Future¶
- Support for configuring cookies! Since they can be set globally, per-domain, and even per-path, the configuration may be complex if not thought out adequately. We'll discuss options for what that might look like. Only our
spark
andcisco_aci
checks currently set cookies, and that is based on code logic, not configuration.