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
sparkandcisco_acichecks currently set cookies, and that is based on code logic, not configuration.