The datadog-firehose-nozzle is a CF component which forwards metrics from the Loggregator Firehose to Datadog
The datadog firehose nozzle requires a UAA user who is authorized to access the loggregator firehose. You can add a user by editing your CloudFoundry manifest to include the details about this user under the properties.uaa.clients section. For example to add a user datadog-firehose-nozzle
:
properties:
uaa:
clients:
datadog-firehose-nozzle:
access-token-validity: 1209600
authorized-grant-types: authorization_code,client_credentials,refresh_token
override: true
secret: <password>
scope: openid,oauth.approvals,logs.admin,cloud_controller.admin_read_only
authorities: oauth.login,logs.admin,cloud_controller.admin_read_only
The datadog nozzle uses a configuration file to obtain the firehose URL, datadog API key and other configuration parameters. The firehose and the datadog servers both require authentication -- the firehose requires a valid username/password and datadog requires a valid API key.
Start the firehose nozzle by executing:
go run main.go -config config/datadog-firehose-nozzle.json"
The configuration file specifies the interval at which the nozzle will flush metrics to datadog. By default this is set to 15 seconds.
For the most part, the datadog-firehose-nozzle forwards metrics from the loggregator firehose to datadog without too much processing. A notable exception is the datadog.nozzle.slowConsumerAlert
metric. The metric is a binary value (0 or 1) indicating whether or not the nozzle is forwarding metrics to datadog at the same rate that it is receiving them from the firehose: 0
means the the nozzle is keeping up with the firehose, and 1
means that the nozzle is falling behind.
The nozzle determines the value of datadog.nozzle.slowConsumerAlert
with the following rules:
-
When the nozzle receives a websocket Close frame with status
1008
, it publishes the value1
. Traffic Controller pings clients to determine if the connections are still alive. If it does not receive a Pong response before the KeepAlive deadline, it decides that the connection is too slow (or even dead) and sends the Close frame. -
Otherwise, the nozzle publishes
0
.
If you need a proxy to connect to the Internet, you can use the HTTPProxyURL
and HTTPSProxyURL
fields in your configuration file in order to configure the nozzle to do this.
For example:
- HTTPProxyURL: "http(s)://user:password@proxy_for_http:port"
- HTTPSProxyURL: "http(s)://user:password@proxy_for_https:port"
Alternatively, you can use environment variables (HTTP_PROXY
and HTTPS_PROXY
).
There is a bosh release that will configure, start and monitor the Datadog nozzle: https://github.com/DataDog/datadog-firehose-nozzle-release