Skip to content

Instantly share code, notes, and snippets.

@bianpengyuan
Last active August 15, 2019 19:12
Show Gist options
  • Save bianpengyuan/87eace8299c1e6686b716be726cb8990 to your computer and use it in GitHub Desktop.
Save bianpengyuan/87eace8299c1e6686b716be726cb8990 to your computer and use it in GitHub Desktop.
apiVersion: "config.istio.io/v1alpha2"
kind: handler
metadata:
name: stackdriver
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledAdapter: stackdriver
params:
pushInterval: 10s
metricInfo:
server-request-count.instance.istio-system:
# Due to a bug in gogoproto deserialization, Enums in maps must be
# specified by their integer value, not variant name. See
# https://github.com/googleapis/googleapis/blob/master/google/api/metric.proto
# MetricKind and ValueType for the values to provide.
kind: 3 # CUMULATIVE
value: 2 # INT64
metric_type: "istio.io/service/server/request_count"
server-request-bytes.instance.istio-system:
kind: 3 # CUMULATIVE
value: 5 # DISTRIBUTION
buckets:
exponentialBuckets:
numFiniteBuckets: 20
scale: 1
growthFactor: 2
metric_type: "istio.io/service/server/request_bytes"
server-response-bytes.instance.istio-system:
kind: 3 # CUMULATIVE
value: 5 # DISTRIBUTION
buckets:
exponentialBuckets:
numFiniteBuckets: 20
scale: 1
growthFactor: 2
metric_type: "istio.io/service/server/response_bytes"
server-response-latencies.instance.istio-system:
kind: 3 # CUMULATIVE
value: 5 # DISTRIBUTION
buckets:
exponentialBuckets:
numFiniteBuckets: 20
scale: 1
growthFactor: 2
metric_type: "istio.io/service/server/response_latencies"
server-received-bytes-count.instance.istio-system:
kind: 3 # CUMULATIVE
value: 2 # INT64
metric_type: "istio.io/service/server/received_bytes_count"
server-sent-bytes-count.instance.istio-system:
kind: 3 # CUMULATIVE
value: 2 # INT64
metric_type: "istio.io/service/server/sent_bytes_count"
client-request-count.instance.istio-system:
kind: 3 # CUMULATIVE
value: 2 # INT64
metric_type: "istio.io/service/client/request_count"
client-request-bytes.instance.istio-system:
kind: 3 # CUMULATIVE
value: 5 # DISTRIBUTION
buckets:
exponentialBuckets:
numFiniteBuckets: 20
scale: 1
growthFactor: 2
metric_type: "istio.io/service/client/request_bytes"
client-response-bytes.instance.istio-system:
kind: 3 # CUMULATIVE
value: 5 # DISTRIBUTION
buckets:
exponentialBuckets:
numFiniteBuckets: 20
scale: 1
growthFactor: 2
metric_type: "istio.io/service/client/response_bytes"
client-roundtrip-latencies.instance.istio-system:
kind: 3 # CUMULATIVE
value: 5 # DISTRIBUTION
buckets:
exponentialBuckets:
numFiniteBuckets: 20
scale: 1
growthFactor: 2
metric_type: "istio.io/service/client/roundtrip_latencies"
client-received-bytes-count.instance.istio-system:
kind: 3 # CUMULATIVE
value: 2 # INT64
metric_type: "istio.io/service/client/received_bytes_count"
client-sent-bytes-count.instance.istio-system:
kind: 3 # CUMULATIVE
value: 2 # INT64
metric_type: "istio.io/service/client/sent_bytes_count"
logInfo:
server-accesslog-stackdriver.instance.istio-system:
labelNames:
- source_uid
- source_ip
- source_app
- source_principal
- source_name
- source_workload
- source_namespace
- source_owner
- destination_uid
- destination_app
- destination_ip
- destination_service_host
- destination_workload
- destination_name
- destination_namespace
- destination_owner
- destination_principal
- api_name
- api_version
- api_claims
- api_key
- request_operation
- protocol
- method
- url
- response_code
- response_size
- request_size
- request_id
- latency
- service_authentication_policy
- user_agent
- response_timestamp
- received_bytes
- sent_bytes
- referer
server-tcp-accesslog-stackdriver.instance.istio-system:
labelNames:
- connection_id
- connection_event
- source_uid
- source_ip
- source_app
- source_principal
- source_name
- source_workload
- source_namespace
- source_owner
- destination_uid
- destination_app
- destination_ip
- destination_service_host
- destination_workload
- destination_name
- destination_namespace
- destination_owner
- destination_principal
- protocol
- connction_duration
- service_authentication_policy
- received_bytes
- sent_bytes
- total_received_bytes
- total_sent_bytes
---
#################################################
############## Metric Config ####################
#################################################
apiVersion: "config.istio.io/v1alpha2"
kind: rule
metadata:
name: stackdriver-server
namespace: istio-system
labels:
app: istio-telemetry
spec:
match: (context.protocol == "http" || context.protocol == "grpc") && (context.reporter.kind | "inbound" == "inbound")
actions:
- handler: stackdriver
instances:
- server-request-count
- server-request-bytes
- server-response-bytes
- server-response-latencies
---
apiVersion: "config.istio.io/v1alpha2"
kind: rule
metadata:
name: stackdriver-client
namespace: istio-system
labels:
app: istio-telemetry
spec:
match: (context.protocol == "http" || context.protocol == "grpc") && (context.reporter.kind | "inbound" == "outbound")
actions:
- handler: stackdriver
instances:
- client-request-count
- client-request-bytes
- client-response-bytes
- client-roundtrip-latencies
---
apiVersion: "config.istio.io/v1alpha2"
kind: rule
metadata:
name: stackdriver-tcp-server
namespace: istio-system
labels:
app: istio-telemetry
spec:
match: context.protocol == "tcp" && (context.reporter.kind | "inbound" == "inbound")
actions:
- handler: stackdriver
instances:
- server-received-bytes-count
- server-sent-bytes-count
---
apiVersion: "config.istio.io/v1alpha2"
kind: rule
metadata:
name: stackdriver-tcp-client
namespace: istio-system
labels:
app: istio-telemetry
spec:
match: context.protocol == "tcp" && (context.reporter.kind | "inbound" == "outbound")
actions:
- handler: stackdriver
instances:
- client-received-bytes-count
- client-sent-bytes-count
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: server-request-count
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: "1"
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_operation: conditional((context.protocol | "unknown") == "grpc", request.path | "unknown", request.method | "unknown")
request_protocol: context.protocol | "unknown"
api_version: api.version | "unknown"
api_name: api.service | "unknown"
response_code: response.code | 0
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_container"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: destination.workload.namespace | "unknown"
location: '""'
container_name: conditional((destination.name | "unknown").startsWith("istio-telemetry") || (destination.name | "unknown").startsWith("istio-policy"), "mixer", destination.container.name | "unknown")
pod_name: destination.name | "unknown"
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: client-request-count
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: "1"
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_operation: conditional((context.protocol | "unknown") == "grpc", request.path | "unknown", request.method | "unknown")
request_protocol: context.protocol | "unknown"
api_version: api.version | "unknown"
api_name: api.service | "unknown"
response_code: response.code | 0
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_pod"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: source.workload.namespace | "unknown"
location: '""'
pod_name: source.name | "unknown"
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: server-request-bytes
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: request.total_size
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_operation: conditional((context.protocol | "unknown") == "grpc", request.path | "unknown", request.method | "unknown")
request_protocol: context.protocol | "unknown"
api_version: api.version | "unknown"
api_name: api.service | "unknown"
response_code: response.code | 0
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_container"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: destination.workload.namespace | "unknown"
location: '""'
container_name: conditional((destination.name | "unknown").startsWith("istio-telemetry") || (destination.name | "unknown").startsWith("istio-policy"), "mixer", destination.container.name | "unknown")
pod_name: destination.name | "unknown"
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: client-request-bytes
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: request.total_size
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_operation: conditional((context.protocol | "unknown") == "grpc", request.path | "unknown", request.method | "unknown")
request_protocol: context.protocol | "unknown"
api_version: api.version | "unknown"
api_name: api.service | "unknown"
response_code: response.code | 0
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_pod"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: source.workload.namespace | "unknown"
location: '""'
pod_name: source.name | "unknown"
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: server-response-bytes
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: response.total_size
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_operation: conditional((context.protocol | "unknown") == "grpc", request.path | "unknown", request.method | "unknown")
request_protocol: context.protocol | "unknown"
api_version: api.version | "unknown"
api_name: api.service | "unknown"
response_code: response.code | 0
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_container"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: destination.workload.namespace | "unknown"
location: '""'
container_name: conditional((destination.name | "unknown").startsWith("istio-telemetry") || (destination.name | "unknown").startsWith("istio-policy"), "mixer", destination.container.name | "unknown")
pod_name: destination.name | "unknown"
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: client-response-bytes
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: response.total_size
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_operation: conditional((context.protocol | "unknown") == "grpc", request.path | "unknown", request.method | "unknown")
request_protocol: context.protocol | "unknown"
api_version: api.version | "unknown"
api_name: api.service | "unknown"
response_code: response.code | 0
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_pod"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: source.workload.namespace | "unknown"
location: '""'
pod_name: source.name | "unknown"
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: server-response-latencies
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: response.duration
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_operation: conditional((context.protocol | "unknown") == "grpc", request.path | "unknown", request.method | "unknown")
request_protocol: context.protocol | "unknown"
api_version: api.version | "unknown"
api_name: api.service | "unknown"
response_code: response.code | 0
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_container"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: destination.workload.namespace | "unknown"
location: '""'
container_name: conditional((destination.name | "unknown").startsWith("istio-telemetry") || (destination.name | "unknown").startsWith("istio-policy"), "mixer", destination.container.name | "unknown")
pod_name: destination.name | "unknown"
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: client-roundtrip-latencies
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: response.duration
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_operation: conditional((context.protocol | "unknown") == "grpc", request.path | "unknown", request.method | "unknown")
request_protocol: context.protocol | "unknown"
api_version: api.version | "unknown"
api_name: api.service | "unknown"
response_code: response.code | 0
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_pod"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: source.workload.namespace | "unknown"
location: '""'
pod_name: source.name | "unknown"
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: server-received-bytes-count
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: connection.received.bytes | 0
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_protocol: context.protocol | "unknown"
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_container"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: destination.workload.namespace | "unknown"
location: '""'
container_name: conditional((destination.name | "unknown").startsWith("istio-telemetry") || (destination.name | "unknown").startsWith("istio-policy"), "mixer", destination.container.name | "unknown")
pod_name: destination.name | "unknown"
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: client-received-bytes-count
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: connection.received.bytes | 0
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_protocol: context.protocol | "unknown"
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_pod"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: source.workload.namespace | "unknown"
location: '""'
pod_name: source.name | "unknown"
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: server-sent-bytes-count
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: connection.sent.bytes | 0
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_protocol: context.protocol | "unknown"
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_container"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: destination.workload.namespace | "unknown"
location: '""'
container_name: conditional((destination.name | "unknown").startsWith("istio-telemetry") || (destination.name | "unknown").startsWith("istio-policy"), "mixer", destination.container.name | "unknown")
pod_name: destination.name | "unknown"
---
apiVersion: "config.istio.io/v1alpha2"
kind: instance
metadata:
name: client-sent-bytes-count
namespace: istio-system
labels:
app: istio-telemetry
spec:
compiledTemplate: metric
params:
value: connection.sent.bytes | 0
dimensions:
destination_service_name: destination.service.name | "unknown"
destination_service_namespace: destination.service.namespace | "unknown"
destination_port: destination.port | 0
request_protocol: context.protocol | "unknown"
service_authentication_policy: conditional((context.reporter.kind | "inbound") == "outbound", "unknown", conditional(connection.mtls | false, "mutual_tls", "none"))
source_workload_namespace: source.workload.namespace | "unknown"
source_workload_name: source.workload.name | "unknown"
source_owner: source.owner | "unknown"
destination_workload_namespace: destination.workload.namespace | "unknown"
destination_workload_name: destination.workload.name | "unknown"
destination_owner: destination.owner | "unknown"
destination_principal: destination.principal | "unknown"
source_principal: source.principal | "unknown"
monitoredResourceType: '"k8s_pod"'
monitoredResourceDimensions:
project_id: '""'
cluster_name: '""'
namespace_name: source.workload.namespace | "unknown"
location: '""'
pod_name: source.name | "unknown"
---
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment