Skip to main content
The Apache integration requires CXDOT Collector 1.4.0 or greater. Apache HTTP Server is an open source web server maintained by the Apache Software Foundation. Use the Apache integration with the Chronosphere XDOT Collector to collect connection, request, traffic, and worker metrics from Apache HTTP Server instances running in your environment. The Apache integration supports Apache HTTP Server 2.4.13 or greater.

Supported telemetry types

The Apache integration supports these telemetry types:

Prerequisites

The Apache integration has the following prerequisites:
  • Enable the mod_status module.
  • Make the Apache HTTP Server status endpoint reachable from the collector.

Configure

To configure the Apache integration, follow these steps:
  1. Configure Apache HTTP Server to expose status information at /server-status. For example, add the following to the Apache HTTP Server configuration:
  2. For Apache HTTP Server pods that listen on port 80, add the app.kubernetes.io/name: apache label to the pod template. For instances that use another port or status URL, provide the status URL through autodiscovery annotations. For more information, see autodiscovery.
  3. Optional: Configure static targets for Apache HTTP Server instances that autodiscovery doesn’t reach. For example, add the following to the values.yaml for your Helm chart:

Validate

To validate the Apache integration, follow these steps:
  1. In the Live Telemetry Analyzer, filter for cxdot.integration.name=apache. Confirm that the Apache metric names appear.
  2. In Metrics Explorer, run the following query while the Apache HTTP Server instances receive traffic:
    Confirm that the query returns the expected time series for each target.
For more information about diagnosing a failing integration, see Troubleshooting.

Configuration reference

Configure one Apache integration instance with the following settings. In Helm values, place these settings under config.integrations.apache. In a Collector configuration file, place them under cxdot.integrations.apache.

Optional settings

  • enabled Type: boolean. Optional. Default: true. Whether to enable this Apache integration instance. If true, the Collector runs the instance. If false, the Collector doesn’t run it.
  • endpoints Type: array of object. Optional. Static Apache targets. A nonempty list disables automatic discovery for this integration instance, and the Collector collects metrics from only the listed targets. Specify a target as host:port to request http://<host>:<port>/server-status?auto. Specify a full HTTP or HTTPS URL to use a different status path or transport security. The Collector appends ?auto when the URL doesn’t include it.
  • endpoints[].endpoint Type: string. Required. Apache target as either host:port or a full HTTP or HTTPS status URL.
  • collection_interval Type: duration. Optional. Default: 10s. How often the Collector collects metrics from each Apache target.
  • timeout Type: duration. Optional. Default: 10s. Maximum time allowed to collect metrics from one Apache target. The value must not exceed collection_interval.
  • disable_keep_alives Type: boolean. Optional. Default: true. Close the scrape connection after each collection instead of holding it open with keep-alive. A held keep-alive connection is parked by the event Multi-Processing Module (MPM) and counted in apache.connections.async{connection_state="keepalive"}, so a persistent scrape connection inflates that value. Set false to reuse one connection across collections. Annotation-discovered endpoints instead take connection persistence from the annotation’s persist_connections, tls_use_host_header, headers, and extra_headers fields.
  • tls Type: object. Optional. Transport layer security (TLS) settings for static HTTPS targets. Certificate verification is enabled unless insecure_skip_verify is true. These settings don’t apply to HTTP targets. Discovery annotations can provide target-specific TLS settings.
  • tls.ca_file Type: string. Optional. Path to the CA cert. For a client this verifies the server certificate. For a server this verifies client certificates. If empty uses system root CA. (optional)
  • tls.ca_pem Type: string. Optional. In memory PEM encoded cert. (optional)
  • tls.cert_file Type: string. Optional. Path to the TLS cert to use for TLS required connections. (optional)
  • tls.cert_pem Type: string. Optional. In memory PEM encoded TLS cert to use for TLS required connections. (optional)
  • tls.cipher_suites Type: array of string. Optional. CipherSuites is a list of TLS cipher suites that the TLS transport can use. If left blank, a safe default list is used. See https://go.dev/src/crypto/tls/cipher_suites.go for a list of supported cipher suites.
  • tls.curve_preferences Type: array of string. Optional. contains the elliptic curves that will be used in an ECDHE handshake, in preference order Defaults to empty list and “crypto/tls” defaults are used, internally.
  • tls.include_system_ca_certs_pool Type: boolean. Optional. If true, load system CA certificates pool in addition to the certificates configured in this struct.
  • tls.insecure Type: boolean. Optional. In gRPC and HTTP when set to true, this is used to disable the client transport security. See https://godoc.org/google.golang.org/grpc#WithInsecure for gRPC. Please refer to https://godoc.org/crypto/tls#Config for more information. (optional, default false)
  • tls.insecure_skip_verify Type: boolean. Optional. InsecureSkipVerify will enable TLS but not verify the certificate.
  • tls.key_file Type: string. Optional. Path to the TLS key to use for TLS required connections. (optional)
  • tls.key_pem Type: string. Optional. In memory PEM encoded TLS key to use for TLS required connections. (optional)
  • tls.max_version Type: string. Optional. MaxVersion sets the maximum TLS version that is acceptable. If not set, refer to crypto/tls for defaults. (optional)
  • tls.min_version Type: string. Optional. MinVersion sets the minimum TLS version that is acceptable. If not set, TLS 1.2 will be used. (optional)
  • tls.reload_interval Type: duration. Optional. ReloadInterval specifies the duration after which the certificate will be reloaded If not set, it will never be reloaded (optional)
  • tls.server_name_override Type: string. Optional. ServerName requested by client for virtual hosting. This sets the ServerName in the TLSConfig. Please refer to https://godoc.org/crypto/tls#Config for more information. (optional)
  • tls.tpm Type: object. Optional. Trusted platform module configuration
  • tls.tpm.auth Type: string. Optional. Authorization value for the trusted platform module key.
  • tls.tpm.enabled Type: boolean. Optional. Whether to use a trusted platform module for the TLS private key. If true, the Collector loads the key from the configured device or socket. If false, the Collector uses the configured key file or in-memory key.
  • tls.tpm.owner_auth Type: string. Optional. Owner authorization value for the trusted platform module.
  • tls.tpm.path Type: string. Optional. The path to the TPM device or Unix domain socket. For instance /dev/tpm0 or /dev/tpmrm0.