123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- [role="xpack"]
- [testenv="basic"]
- [[http-exporter]]
- === HTTP Exporters
- The `http` exporter is the preferred exporter in {monitoring} because it enables
- the use of a separate monitoring cluster. As a secondary benefit, it avoids
- using a production cluster node as a coordinating node for indexing monitoring
- data because all requests are HTTP requests to the monitoring cluster.
- The `http` exporter uses the low-level {es} REST Client, which enables it to
- send its data to any {es} cluster it can access through the network. Its requests
- make use of the <<common-options-response-filtering,`filter_path`>> parameter to
- reduce bandwidth whenever possible, which helps to ensure that communications
- between the production and monitoring clusters are as lightweight as possible.
- The `http` exporter supports a number of settings that control how it
- communicates over HTTP to remote clusters. In most cases, it is not
- necessary to explicitly configure these settings. For detailed
- descriptions, see <<monitoring-settings>>.
- [source,yaml]
- ----------------------------------
- xpack.monitoring.exporters:
- my_local: <1>
- type: local
- my_remote: <2>
- type: http
- host: [ "10.1.2.3:9200", ... ] <3>
- auth: <4>
- username: my_username
- password: changeme
- connection:
- timeout: 6s
- read_timeout: 60s
- ssl: ... <5>
- proxy:
- base_path: /some/base/path <6>
- headers: <7>
- My-Proxy-Header: abc123
- My-Other-Thing: [ def456, ... ]
- index.name.time_format: YYYY-MM <8>
- ----------------------------------
- <1> A `local` exporter defined explicitly whose arbitrary name is `my_local`.
- <2> An `http` exporter defined whose arbitrary name is `my_remote`. This name
- uniquely defines the exporter but is otherwise unused.
- <3> `host` is a required setting for `http` exporters. It must specify the HTTP
- port rather than the transport port. The default port value is `9200`.
- <4> User authentication for those using {security} or some other
- form of user authentication protecting the cluster.
- <5> See <<http-exporter-settings>> for all TLS/SSL settings. If not supplied,
- the default node-level TLS/SSL settings are used.
- <6> Optional base path to prefix any outgoing request with in order to
- work with proxies.
- <7> Arbitrary key/value pairs to define as headers to send with every request.
- The array-based key/value format sends one header per value.
- <8> A mechanism for changing the date suffix used by default.
- NOTE: The `http` exporter accepts an array of `hosts` and it will round robin
- through the list. It is a good idea to take advantage of that feature when the
- monitoring cluster contains more than one node.
- Unlike the `local` exporter, _every_ node that uses the `http` exporter attempts
- to check and create the resources that it needs. The `http` exporter avoids
- re-checking the resources unless something triggers it to perform the checks
- again. These triggers include:
- * The production cluster's node restarts.
- * A connection failure to the monitoring cluster.
- * The license on the production cluster changes.
- * The `http` exporter is dynamically updated (and it is therefore replaced).
- The easiest way to trigger a check is to disable, then re-enable the exporter.
- WARNING: This resource management behavior can create a hole for users that
- delete monitoring resources. Since the `http` exporter does not re-check its
- resources unless one of the triggers occurs, this can result in malformed index
- mappings.
- Unlike the `local` exporter, the `http` exporter is inherently routing requests
- outside of the cluster. This situation means that the exporter must provide a
- username and password when the monitoring cluster requires one (or other
- appropriate security configurations, such as TLS/SSL settings).
- IMPORTANT: When discussing security relative to the `http` exporter, it is
- critical to remember that all users are managed on the monitoring cluster. This
- is particularly important to remember when you move from development
- environments to production environments, where you often have dedicated
- monitoring clusters.
- For more information about the configuration options for the `http` exporter,
- see <<http-exporter-settings>>.
- [float]
- [[http-exporter-dns]]
- ==== Using DNS Hosts in HTTP Exporters
- {monitoring} runs inside of the JVM security manager. When the JVM has the
- security manager enabled, the JVM changes the duration so that it caches DNS
- lookups indefinitely (for example, the mapping of a DNS hostname to an IP
- address). For this reason, if you are in an environment where the DNS response
- might change from time-to-time (for example, talking to any load balanced cloud
- provider), you are strongly discouraged from using DNS hostnames.
- Alternatively, you can set the JVM security property `networkaddress.cache.ttl`,
- which accepts values in seconds. This property must be set for the node's JVM that
- uses {monitoring} for {es} when using DNS that can change IP addresses. If you
- do not apply this setting, the connection consistently fails after the IP
- address changes.
- IMPORTANT: JVM security properties are different than system properties. They
- cannot be set at startup via `-D` system property settings and instead they must
- be set in code before the security manager has been setup _or_, more
- appropriately, in the `$JAVA_HOME/lib/security/java.security` file.
- Restarting the node (and therefore the JVM) results in its cache being flushed.
|