SolarWinds

The solarwinds adapter enables Istio to deliver log and metric data to the Papertrail logging backend and the AppOptics monitoring backend.

This adapter supports the metric template and the logentry template.

Params

Configuration format for the solarwinds adapter.

Example config usage:

apiVersion: "config.istio.io/v1alpha2"
kind: solarwinds
metadata:
  name: handler
  namespace: istio-system
spec:
  appoptics_access_token: <APPOPTICS SAMPLE TOKEN>
  papertrail_url: <PAPERTRAIL URL>
  papertrail_local_retention_duration: <RETENTION PERIOD FOR LOGS LOCALLY, Optional>
  metrics:
    requestcount.metric.istio-system:
      label_names:
      - source_service
      - source_version
      - destination_service
      - destination_version
      - response_code
    requestduration.metric.istio-system:
      label_names:
      - source_service
      - source_version
      - destination_service
      - destination_version
      - response_code
    requestsize.metric.istio-system:
      label_names:
      - source_service
      - source_version
      - destination_service
      - destination_version
      - response_code
    responsesize.metric.istio-system:
      label_names:
      - source_service
      - source_version
      - destination_service
      - destination_version
      - response_code
    tcpbytesent.metric.istio-system:
      label_names:
      - source_service
      - source_version
      - destination_service
      - destination_version
    tcpbytereceived.metric.istio-system:
      label_names:
      - source_service
      - source_version
      - destination_service
      - destination_version
  logs:
    solarwindslogentry.logentry.istio-system:
      payloadTemplate: '{{or (.originIp) "-"}} - {{or (.sourceUser) "-"}} [{{or (.timestamp.Format "2006-01-02T15:04:05Z07:00") "-"}}] "{{or (.method) "-"}} {{or (.url) "-"}} {{or (.protocol) "-"}}" {{or (.responseCode) "-"}} {{or (.responseSize) "-"}}'
Field Type Description
appopticsAccessToken string

AppOptics Access Token needed to send metrics to AppOptics. If no access token is given then metrics will NOT be shipped to AppOptics

appopticsBatchSize int32

Optional. Max batch size of metrics to be sent to AppOptics. AppOptics does not allow batch size greater than 1000. If this is unspecified or given a value 0 explicitely, a default batch size of 1000 will be used.

papertrailUrl string

Papertrail url to ship logs to. If no papertrail url is given then the logs will NOT be shipped but rather dropped.

papertrailLocalRetentionDuration google.protobuf.Duration

This is the duration for which logs will be persisted locally until it is shipped to papertrail in the event of a network failure. Default value is 1 hour.

metrics map<string, Params.MetricInfo>

A map of Istio metric name to solarwinds metric info.

logs map<string, Params.LogInfo>

A map of Istio logentry name to solarwinds log info.

Params.LogInfo

Describes how to represent an Istio log entry in Solarwinds AppOptics

Field Type Description
payloadTemplate string

Optional. A golang text/template template (more details about golang text/template’s templating can be found here: https://golang.org/pkg/text/template/) that will be executed to construct the payload for this log entry. An example template that could be used: {{or (.originIp) “-”}} - {{or (.sourceUser) “-”}} [{{or (.timestamp.Format “2006-01-02T15:04:05Z07:00”) “-”}}] “{{or (.method) “-”}} {{or (.url) “-”}} {{or (.protocol) “-”}}” {{or (.responseCode) “-”}} {{or (.responseSize) “-”}} A sample log that will be created after parsing the template with appropriate variables will look like this: Jan 23 21:53:02 istio-mixer-57d88dc4b4-rbgmc istio: 10.32.0.15 - kubernetes://istio-ingress-78545c5bc9-wbr6g.istio-system [2018-01-24T02:53:02Z] “GET /productpage http” 200 5599 It will be given the full set of variables for the log to use to construct its result. If it is not provided, a default template in place will be used.

Params.MetricInfo

Describes how to represent an Istio metric in Solarwinds AppOptics

Field Type Description
labelNames string[]

The names of labels to use: these need to match the dimensions of the Istio metric.