Hi there,
Is there a way to list the available mixer adapters (built-in and/or out-of-process)?
The reason I ask is because I’m trying to use the dogstatsd adapter and:
-
When I installed istio (from https://gcsweb.istio.io/gcs/istio-prerelease/daily-build/1.1.0-snapshot.4/charts) the dogstatsd.config.istio.io CRD didn’t exist. I installed it from the crd-11.yaml available in the istio github repo
-
I previously set up a statsd adapter that works as expected, however the metrics don’t include tags, hence my move to dogstatsd
-
With that installed, when I created my handler metrics I get absolutely nothing. No errors in the mixer log, no metrics in the istio-telemetry:9093 endpoint (I do see the mixer_runtime_dispatch_duration_seconds_bucket with the adapter=“prometheus” and adapter=“statsd” )
So I’m thinking that maybe the dogstatsd adapter hasn’t been compiled in my version of mixer? If so, is there a guide I can follow to run it out-of-process?
Cheers
It’s probably worth mentioning that istio-telemetry is using the istio/mixer:1.1.0-snapshot.4 image from dockerhub
To answer my own question, the problem was that the sampleRate parameter in the dogstatsd handler is not optional. Adding it fixed my issue.
@Lethalpaga_Jones Are you able to share what you did to get the dogstatsd handler configured?
Sure, this is the handler config. As you can tell by the name we send it to gostatsd (and then to newrelic) instead of the datadog agent, it works beautifully with istio-1.1.0-snapshot.5. It didn’t work with snapshot.4, and I haven’t tried on other versions.
apiVersion: config.istio.io/v1alpha2
kind: dogstatsd
metadata:
name: newrelic
namespace: istio-system
spec:
address: gostatsd.istio-system.svc.cluster.local:8125
global_tags:
cluster: test
metrics:
requestcount.metric.istio-system:
name: requests_total
type: COUNTER
requestduration.metric.istio-system:
name: request_duration_seconds
type: DISTRIBUTION
requestsize.metric.istio-system:
name: request_bytes
type: DISTRIBUTION
responsesize.metric.istio-system:
name: response_bytes
type: DISTRIBUTION
tcpbytereceived.metric.istio-system:
name: tcp_received_bytes_total
type: COUNTER
tcpbytesent.metric.istio-system:
name: tcp_sent_bytes_total
type: COUNTER
tcpconnectionsclosed.metric.istio-system:
name: tcp_connections_closed_total
type: COUNTER
tcpconnectionsopened.metric.istio-system:
name: tcp_connections_opened_total
type: COUNTER
sample_rate: 0.01
And here’s the rules config:
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
name: newrelichttp
namespace: istio-system
spec:
match: context.protocol == "http" || context.protocol == "grpc"
actions:
- handler: newrelic.dogstatsd
instances:
- requestcount.metric.istio-system
- requestduration.metric
- requestsize.metric.istio-system
- responsesize.metric.istio-system
---
apiVersion: config.istio.io/v1alpha2
kind: rule
metadata:
name: newrelictcp
namespace: istio-system
spec:
match: context.protocol == "tcp"
actions:
- handler: newrelic.dogstatsd
instances:
- tcpbytesent.metric
- tcpbytereceived.metric