Detailed Global Configurations

There are many detailed configuration options outside of the required values. For a simple configuration, see this section.

This page contains a list of all possible global options. For discovery mechanism specific options, see the service discovery configuration pages.

Environment Variables

See the list of global options as command line flags, and set any global flag in the form --<type>.<flag> as an environment variable in the form GM_CONTROL_<TYPE>_<FLAG>.

Command Line Flags

To view both the global options as well as discovery command specific options when using the CLI, run gm-control <COMMAND> --help.

GLOBAL OPTIONS
    --api.header=header
            Specifies a custom header to send with every gm-control request.
            Headers are given as name:value pairs. Leading and trailing
            whitespace will be stripped from the name and value. For
            multiple headers, this flag may be repeated or multiple headers
            can be delimited with commas.

    --api.host=host:port
            (default: localhost:80)
            The address (host:port) for gm-control requests. If no port is
            given, it defaults to port 443 if --api.ssl is true and port 80
            otherwise.

    --api.insecure
            (default: false)
            If true, don't validate server cert when using SSL for
            gm-control requests

    --api.key=string
            (default: "none")
            [SENSITIVE] The auth key for gm-control requests

    --api.prefix=value
            The url prefix for gm-control requests. Forms the path part of
            <host>:<port><path>

    --api.ssl
            (default: true)
            If true, use SSL for gm-control requests

    --api.sslCert=value
            Specifies the SSL cert to use for every gm-control request.

    --api.sslKey=value
            Specifies the SSL key to use for every gm-control request.

    --api.zone-name=string
            The name of the API Zone for gm-control requests.

    --console.format=value
            (default: "json")
            (valid values: "console" or "json")
            Selects the format for console log messages.

    --console.level=level
            (default: "info")
            (valid values: "debug", "info", "error", or "none")
            Selects the log level for console logs messages.

    --delay=duration
            (default: 30s)
            Sets the minimum time between API updates. If the discovery data
            changes more frequently than this duration, updates are delayed
            to maintain the minimum time.

    --diff.dry-run
            (default: false)
            Log changes at the info level rather than submitting them to the
            API

    --diff.ignore-create
            (default: false)
            If true, do not create new Clusters in the API

    --diff.include-delete
            (default: false)
            If true, delete missing Clusters from the API

    --help  (default: false)
            Show a list of commands or help for one command

    --stats.api.header=header
            Specifies a custom header to send with every stats API request.
            Headers are given as name:value pairs. Leading and trailing
            whitespace will be stripped from the name and value. For
            multiple headers, this flag may be repeated or multiple headers
            can be delimited with commas.

    --stats.api.host=host:port
            (default: localhost:80)
            The address (host:port) for stats API requests. If no port is
            given, it defaults to port 443 if --stats.api.ssl is true and
            port 80 otherwise.

    --stats.api.insecure
            (default: false)
            If true, don't validate server cert when using SSL for stats API
            requests

    --stats.api.prefix=value
            The url prefix for stats API requests. Forms the path part of
            <host>:<port><path>

    --stats.api.ssl
            (default: true)
            If true, use SSL for stats API requests

    --stats.api.sslCert=value
            Specifies the SSL cert to use for every stats API request.

    --stats.api.sslKey=value
            Specifies the SSL key to use for every stats API request.

    --stats.backends=value
            (valid values: "dogstatsd", "prometheus", "statsd", or
            "wavefront")
            Selects which stats backend(s) to use.

    --stats.batch
            (default: true)
            If true, stats requests are batched together for performance.

    --stats.dogstatsd.debug
            (default: false)
            If enabled, logs the stats data on stdout.

    --stats.dogstatsd.flush-interval=duration
            (default: 5s)
            Specifies the duration between stats flushes.

    --stats.dogstatsd.host=string
            (default: "127.0.0.1")
            Specifies the destination host for stats.

    --stats.dogstatsd.latch
            (default: false)
            Specifies whether stats are accumulated over a window before
            being sent to the backend.

    --stats.dogstatsd.latch.base-value=float
            (default: 0.001)
            Specifies the upper bound of the first bucket used for
            accumulating histograms. Each subsequent bucket's upper bound is
            double the previous bucket's. For timings this value is taken to
            be in units of seconds. Must be greater than 0.

    --stats.dogstatsd.latch.buckets=int
            (default: 20)
            Specifies the number of buckets used for accumulating
            histograms. Must be greater than 1.

    --stats.dogstatsd.latch.window=duration
            (default: 1m0s)
            Specifies the period of time over which stats are latched. Must
            be greater than 0.

    --stats.dogstatsd.max-packet-len=bytes
            (default: 8192)
            Specifies the maximum number of payload bytes sent per flush. If
            necessary, flushes will occur before the flush interval to
            prevent payloads from exceeding this size. The size does not
            include IP and UDP header bytes. Stats may not be delivered if
            the total size of the headers and payload exceeds the network's
            MTU.

    --stats.dogstatsd.port=int
            (default: 8125)
            Specifies the destination port for stats.

    --stats.dogstatsd.scope=string
            If specified, prepends the given scope to metric names.

    --stats.dogstatsd.transform-tags=string
            Defines one or more transformations for tags. A tag with a
            specific name whose value matches a regular expression can be
            transformed into one or more tags with values extracted from
            subexpressions of the regular expression. Transformations are
            specified as follows:

                tag=/regex/,n1,n2...

            where tag is the name of the tag to be transformed, regex is a
            regular expression with 1 or more subexpressions, and n1,n2...
            is a sequence of names for the tags formed from the regular
            expression's subexpressions (matching groups). Any character may
            be used in place of the slashes (/) to delimit the regular
            expression. There must be at least one subexpression in the
            regular expression. There must be exactly as many names as
            subexpressions. If one of the names is the original tag name,
            the original tag is replaced with the transformed value.
            Otherwise, the original tag is passed through unchanged.
            Multiple transformations may be separated by semicolons (;). Any
            character may be escaped with a backslash (\).

            Examples:

                foo=/^(.+):.*x=([0-9]+)/,foo,bar
                foo=@.*y=([A-Za-z_]+)@,yval

    --stats.event-backends=value
            (valid values: "console" or "honeycomb")
            Selects which stats backend(s) to use for structured events.

    --stats.exec.attempt-timeout=duration
            (default: 1s)
            Specifies the default timeout for individual action attempts. A
            timeout of 0 means no timeout.

    --stats.exec.delay=duration
            (default: 100ms)
            Specifies the initial delay for the exponential delay type.
            Specifies the delay for constant delay type.

    --stats.exec.delay-type=value
            (default: "exponential")
            (valid values: "constant" or "exponential")
            Specifies the retry delay type.

    --stats.exec.max-attempts=int
            (default: 8)
            Specifies the maximum number of attempts made, inclusive of the
            original attempt.

    --stats.exec.max-delay=duration
            (default: 30s)
            Specifies the maximum delay for the exponential delay type.
            Ignored for the constant delay type.

    --stats.exec.parallelism=int
            (default: 8)
            Specifies the maximum number of concurrent attempts running.

    --stats.exec.timeout=duration
            (default: 10s)
            Specifies the default timeout for actions. A timeout of 0 means
            no timeout.

    --stats.honeycomb.api-host=string
            (default: "https://api.honeycomb.io")
            The Honeycomb API host to send messages to

    --stats.honeycomb.batchSize=uint
            (default: 50)
            The Honeycomb batch size to use

    --stats.honeycomb.dataset=string
            They Honeycomb dataset to send messages to.

    --stats.honeycomb.sample-rate=uint
            (default: 1)
            The Honeycomb sample rate to use. Specified as 1 event sent per
            Sample Rate

    --stats.honeycomb.write-key=string
            They Honeycomb write key used to send messages.

    --stats.max-batch-delay=duration
            (default: 1s)
            If batching is enabled, the maximum amount of time requests are
            held before transmission

    --stats.max-batch-size=int
            (default: 100)
            If batching is enabled, the maximum number of requests that will
            be combined.

    --stats.node=string
            If set, specifies the node to use when submitting stats to
            backends. Equivalent to adding "--stats.tags=node=value" to the
            command line.

    --stats.prometheus.addr=value
            (default: 0.0.0.0:9102)
            Specifies the listener address for Prometheus scraping.

    --stats.prometheus.scope=string
            If specified, prepends the given scope to metric names.

    --stats.source=string
            If set, specifies the source to use when submitting stats to
            backends. Equivalent to adding "--stats.tags=source=value" to
            the command line. In either case, a UUID is appended to the
            value to insure that it is unique across proxies. Cannot be
            combined with --stats.unique-source.

    --stats.statsd.debug
            (default: false)
            If enabled, logs the stats data on stdout.

    --stats.statsd.flush-interval=duration
            (default: 5s)
            Specifies the duration between stats flushes.

    --stats.statsd.host=string
            (default: "127.0.0.1")
            Specifies the destination host for stats.

    --stats.statsd.latch
            (default: false)
            Specifies whether stats are accumulated over a window before
            being sent to the backend.

    --stats.statsd.latch.base-value=float
            (default: 0.001)
            Specifies the upper bound of the first bucket used for
            accumulating histograms. Each subsequent bucket's upper bound is
            double the previous bucket's. For timings this value is taken to
            be in units of seconds. Must be greater than 0.

    --stats.statsd.latch.buckets=int
            (default: 20)
            Specifies the number of buckets used for accumulating
            histograms. Must be greater than 1.

    --stats.statsd.latch.window=duration
            (default: 1m0s)
            Specifies the period of time over which stats are latched. Must
            be greater than 0.

    --stats.statsd.max-packet-len=bytes
            (default: 8192)
            Specifies the maximum number of payload bytes sent per flush. If
            necessary, flushes will occur before the flush interval to
            prevent payloads from exceeding this size. The size does not
            include IP and UDP header bytes. Stats may not be delivered if
            the total size of the headers and payload exceeds the network's
            MTU.

    --stats.statsd.port=int
            (default: 8125)
            Specifies the destination port for stats.

    --stats.statsd.scope=string
            If specified, prepends the given scope to metric names.

    --stats.statsd.transform-tags=string
            Defines one or more transformations for tags. A tag with a
            specific name whose value matches a regular expression can be
            transformed into one or more tags with values extracted from
            subexpressions of the regular expression. Transformations are
            specified as follows:

                tag=/regex/,n1,n2...

            where tag is the name of the tag to be transformed, regex is a
            regular expression with 1 or more subexpressions, and n1,n2...
            is a sequence of names for the tags formed from the regular
            expression's subexpressions (matching groups). Any character may
            be used in place of the slashes (/) to delimit the regular
            expression. There must be at least one subexpression in the
            regular expression. There must be exactly as many names as
            subexpressions. If one of the names is the original tag name,
            the original tag is replaced with the transformed value.
            Otherwise, the original tag is passed through unchanged.
            Multiple transformations may be separated by semicolons (;). Any
            character may be escaped with a backslash (\).

            Examples:

                foo=/^(.+):.*x=([0-9]+)/,foo,bar
                foo=@.*y=([A-Za-z_]+)@,yval

    --stats.tags=value
            Tags to be included with every stat. May be comma-delimited or
            specified more than once. Should be of the form "<key>=<value>"
            or "tag"

    --stats.unique-source=string
            If set, specifies the source to use when submitting stats to
            backends. Equivalent to adding "--stats.tags=source=value" to
            the command line. Unlike --stats.source, failing to specify a
            unique value may prevent stats from being recorded correctly.
            Cannot be combined with --stats.source.

    --stats.wavefront.debug
            (default: false)
            If enabled, logs the stats data on stdout.

    --stats.wavefront.flush-interval=duration
            (default: 5s)
            Specifies the duration between stats flushes.

    --stats.wavefront.host=string
            (default: "127.0.0.1")
            Specifies the destination host for stats.

    --stats.wavefront.latch
            (default: false)
            Specifies whether stats are accumulated over a window before
            being sent to the backend.

    --stats.wavefront.latch.base-value=float
            (default: 0.001)
            Specifies the upper bound of the first bucket used for
            accumulating histograms. Each subsequent bucket's upper bound is
            double the previous bucket's. For timings this value is taken to
            be in units of seconds. Must be greater than 0.

    --stats.wavefront.latch.buckets=int
            (default: 20)
            Specifies the number of buckets used for accumulating
            histograms. Must be greater than 1.

    --stats.wavefront.latch.window=duration
            (default: 1m0s)
            Specifies the period of time over which stats are latched. Must
            be greater than 0.

    --stats.wavefront.max-packet-len=bytes
            (default: 8192)
            Specifies the maximum number of payload bytes sent per flush. If
            necessary, flushes will occur before the flush interval to
            prevent payloads from exceeding this size. The size does not
            include IP and UDP header bytes. Stats may not be delivered if
            the total size of the headers and payload exceeds the network's
            MTU.

    --stats.wavefront.port=int
            (default: 8125)
            Specifies the destination port for stats.

    --stats.wavefront.scope=string
            If specified, prepends the given scope to metric names.

    --stats.wavefront.transform-tags=string
            Defines one or more transformations for tags. A tag with a
            specific name whose value matches a regular expression can be
            transformed into one or more tags with values extracted from
            subexpressions of the regular expression. Transformations are
            specified as follows:

                tag=/regex/,n1,n2...

            where tag is the name of the tag to be transformed, regex is a
            regular expression with 1 or more subexpressions, and n1,n2...
            is a sequence of names for the tags formed from the regular
            expression's subexpressions (matching groups). Any character may
            be used in place of the slashes (/) to delimit the regular
            expression. There must be at least one subexpression in the
            regular expression. There must be exactly as many names as
            subexpressions. If one of the names is the original tag name,
            the original tag is replaced with the transformed value.
            Otherwise, the original tag is passed through unchanged.
            Multiple transformations may be separated by semicolons (;). Any
            character may be escaped with a backslash (\).

            Examples:

                foo=/^(.+):.*x=([0-9]+)/,foo,bar
                foo=@.*y=([A-Za-z_]+)@,yval

    --version
            (default: false)
            Print the version and exit

    --xds.addr=value
            (default: :50000)
            The address on which to serve the envoy API server.

    --xds.ads-enabled
            (default: true)
            If false, turn off ads discovery mode

    --xds.ca-file=string
            Path to a file (on the Envoy host's file system) containing CA
            certificates for TLS.

    --xds.default-timeout=duration
            (default: 1m0s)
            The default request timeout, if none is specified in the
            RetryPolicy for a Route

    --xds.disabled
            (default: false)
            Disables the xDS listener.

    --xds.enable-rest
            (default: false)
            If true, enable REST api type instead of gRPC

    --xds.enable-tls
            (default: false)
            Enable grpc xDS TLS

    --xds.gateway-addr=value
            (default: :50001)
            The address on to serve the HTTP gateway which fronts the envoy
            API server

    --xds.grpc-log-top=int
            (default: 0)
            When gRPC logging is enabled and this value is greater than 1,
            logs of non-success Envoy responses are tracked and periodically
            reported. This flag controls how many unique response code &
            request path combinations are tracked. When the number of
            tracked combinations in the reporting period is exceeded,
            uncommon paths are evicted.

    --xds.grpc-log-top-interval=duration
            (default: 5m0s)
            See the grpc-log-top flag. Controls the interval at which top
            logs are generated.

    --xds.interval=duration
            (default: 1s)
            The interval for polling the Greymatter API. Minimium value is
            500ms

    --xds.log-access-logs
            (default: false)
            If true, log access logs using the standard logger

    --xds.resolve-dns
            (default: true)
            If true, resolve EDS hostnames to IP addresses.

    --xds.server-auth-type=string
            TLS client authentication type

    --xds.server-cert=string
            URL containing the server certificate for the grpc ADS server

    --xds.server-key=string
            URL containing the server certificate key for the grpc ADS
            server

    --xds.server-trusts=string
            Comma-delimited URLs containing truststores for the grpc ADS
            server

    --xds.standalone-cluster=string
            (default: "default-cluster")
            The name of the cluster for the Envoys consuming the standalone
            xDS server. Should match the --service-cluster flag for the
            envoy binary, or the ENVOY_NODE_CLUSTER value for the
            envoy-simple Docker image.

    --xds.standalone-port=int
            (default: 80)
            The port on which Envoys consuming the standalone xDS server
            should listen. Ignored if --api.key is specified.

    --xds.standalone-zone=string
            (default: "default-zone")
            The name of the zone for the Envoys consuming the standalone xDS
            server. Should match the --service-zone flag for the envoy
            binary, or the ENVOY_NODE_ZONE value for the envoy-simple Docker
            image.

    --xds.static-resources.conflict-behavior=value
            (default: "merge")
            (valid values: "overwrite" or "merge")
            How to handle conflicts between configuration types. If
            "overwrite" configuration types overwrite defaults. For example,
            if one were to include "listeners" in the static resources
            configuration file, all existing listeners would be overwritten.
            If the value is "merge", listeners would be merged together,
            with collisions favoring the statically configured listener.
            Clusters are differentiated by name, while listeners are
            differentiated by IP/port. Listeners on 0.0.0.0 (or ::) on a
            given port will collide with any other IP with the same port.
            Specifying colliding static resources will produce a startup
            error.

    --xds.static-resources.filename=string
            Path to a file containing static resources. The contents of the
            file should be either a JSON or YAML fragment (as configured by
            the corresponding --format flag) containing any combination of
            "clusters" (an array of
            https://www.envoyproxy.io/docs/envoy/v1.15.0/api-v2/api/v2/cds.proto#cluster),
            "cluster_template" (a single cluster, which will be used as the
            prototype for all clusters not specified statically), and/or
            listeners" (an array of
            https://www.envoyproxy.io/docs/envoy/v1.15.0/api-v2/api/v2/lds.proto#listener).
            The file is read once at startup. Only the v2 API is parsed.
            Enum strings such as "ROUND_ROBIN" must be capitalized.

    --xds.static-resources.format=value
            (default: "yaml")
            (valid values: "json" or "yaml")
            The format of the static resources file

Last updated

Was this helpful?