mirror of https://github.com/istio/istio.io.git
107 lines
62 KiB
HTML
107 lines
62 KiB
HTML
<!DOCTYPE html><html lang="en" itemscope itemtype="https://schema.org/WebPage"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><meta name="theme-color" content="#466BB0"/><meta name="title" content="Collecting Metrics and Logs"><meta name="description" content="This task shows you how to configure Istio to collect metrics and logs."><meta name="og:title" content="Collecting Metrics and Logs"><meta name="og:description" content="This task shows you how to configure Istio to collect metrics and logs."><meta name="og:url" content="/docs/tasks/telemetry/metrics-logs.html"><meta name="og.site_name" content="Istio"><title>Istioldie 0.6 / Collecting Metrics and Logs</title><script> window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date; ga('create', 'UA-98480406-2', 'auto'); ga('send', 'pageview'); </script> <script async src='https://www.google-analytics.com/analytics.js'></script><link rel="alternate" type="application/rss+xml" title="Istio Blog RSS" href="/v0.6/feed.xml"><link rel="shortcut icon" href="/v0.6/favicons/favicon.ico" ><link rel="apple-touch-icon" href="/v0.6/favicons/apple-touch-icon-180x180.png" sizes="180x180"><link rel="icon" type="image/png" href="/v0.6/favicons/favicon-16x16.png" sizes="16x16"><link rel="icon" type="image/png" href="/v0.6/favicons/favicon-32x32.png" sizes="32x32"><link rel="icon" type="image/png" href="/v0.6/favicons/android-36x36.png" sizes="36x36"><link rel="icon" type="image/png" href="/v0.6/favicons/android-48x48.png" sizes="48x48"><link rel="icon" type="image/png" href="/v0.6/favicons/android-72x72.png" sizes="72x72"><link rel="icon" type="image/png" href="/v0.6/favicons/android-96x196.png" sizes="96x196"><link rel="icon" type="image/png" href="/v0.6/favicons/android-144x144.png" sizes="144x144"><link rel="icon" type="image/png" href="/v0.6/favicons/android-192x192.png" sizes="192x192"><link rel="manifest" href="/v0.6/manifest.json"><meta name="apple-mobile-web-app-title" content="Istio"><meta name="application-name" content="Istio"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900,900italic"><link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.6/css/all.css"><link rel="stylesheet" href="/v0.6/css/light_theme.css" title="light"><link rel="alternate stylesheet" href="/v0.6/css/dark_theme.css" title="dark"> <script src="/v0.6/js/styleSwitcher.min.js"></script></head><body class="language-unknown theme-unknown"><header role="banner"><nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark"> <a class="navbar-brand" href="/v0.6/" style="visibility: visible"> <img class="logo" src="/v0.6/img/istio-logo.svg" alt="Istio Logo"/> <span class="brand-name">Istioldie 0.6</span> </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button><div class="collapse navbar-collapse justify-content-end" id="navbarCollapse"><ul class="navbar-nav"><li class="nav-item"> <a class="nav-link " href="/v0.6/about/intro.html">About</a></li><li class="nav-item"> <a class="nav-link " href="/v0.6/blog/2018/traffic-mirroring.html">Blog</a></li><li class="nav-item"> <a class="nav-link active" href="/v0.6/docs/">Docs</a></li><li class="nav-item"> <a class="nav-link " href="/v0.6/help/">Help</a></li><li class="nav-item"> <a class="nav-link " href="/v0.6/community.html">Community</a></li><li class="nav-item dropdown" id="gearDropdown" style="white-space: nowrap"> <a href="" class="nav-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i style="width: 1em" class='fa fa-lg fa-cog'></i> </a><ul class="dropdown-menu" aria-labelledby="gearDropdown"><h6 class="dropdown-header">Other versions of this site</h6><li> <a href="https://istio.io">Current Release</a></li><li> <a href="https://preliminary.istio.io">Next Release</a></li><li> <a href="https://archive.istio.io">Older Releases</a></li><li class="dropdown-divider"></li><li> <i class='fa fa-check light'></i> <a href="" onclick="setActiveStyleSheet('light');return false;">Light Theme</a></li><li> <i class='fa fa-check dark'></i> <a href="" onclick="setActiveStyleSheet('dark');return false;">Dark Theme</a></li></ul></li></ul><form name="cse" id="searchbox" class="form-inline justify-content-end" role="search"> <input type="hidden" name="cx" value="013699703217164175118:iwwf17ikgf4" /> <input type="hidden" name="ie" value="utf-8" /> <input type="hidden" name="hl" value="en" /><div class="input-group"> <input name="q" class="form-control search-box" type="text" size="30" /> <button class="btn btn-search input-group-addon my-2 my-sm-0 fa fa-search" type="submit"></button></div></form></div></nav></header><div class="container-fluid"><div class="row row-offcanvas row-offcanvas-left"><div class="col-6 col-md-3 col-xl-2 sidebar-offcanvas"><nav class="sidebar"><div class="spacer"></div><div class="directory" role="tablist"><div class="card"><div class="card-header" role="tab" id="header1"> <a data-toggle="collapse" href="#collapse1" title="Concepts help you learn about the different parts of the Istio system and the abstractions it uses." role="button" aria-controls="collapse1"><div> Concepts</div></a></div><div id="collapse1" class="collapse" data-parent="#sidebar" role="tabpanel" aria-labelledby="header1"><div class="card-body"><ul class="tree"><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="A broad overview of the Istio system." href="/v0.6/docs/concepts/what-is-istio">What is Istio?</a> </label><ul class="tree collapse"><li> <a title="Provides a conceptual introduction to Istio, including the problems it solves and its high-level architecture." href="/v0.6/docs/concepts/what-is-istio/overview.html">Overview</a></li><li> <a title="Describes the core principles that Istio's design adheres to." href="/v0.6/docs/concepts/what-is-istio/goals.html">Design Goals</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes the various Istio features focused on traffic routing and control." href="/v0.6/docs/concepts/traffic-management">Traffic Management</a> </label><ul class="tree collapse"><li> <a title="Provides a conceptual overview of traffic management in Istio and the features it enables." href="/v0.6/docs/concepts/traffic-management/overview.html">Overview</a></li><li> <a title="Introduces Pilot, the component responsible for managing a distributed deployment of Envoy proxies in the service mesh." href="/v0.6/docs/concepts/traffic-management/pilot.html">Pilot</a></li><li> <a title="Describes how requests are routed between services in an Istio service mesh." href="/v0.6/docs/concepts/traffic-management/request-routing.html">Request Routing</a></li><li> <a title="Describes how traffic is load balanced across instances of a service in the mesh." href="/v0.6/docs/concepts/traffic-management/load-balancing.html">Discovery & Load Balancing</a></li><li> <a title="An overview of failure recovery capabilities in Envoy that can be leveraged by unmodified applications to improve robustness and prevent cascading failures." href="/v0.6/docs/concepts/traffic-management/handling-failures.html">Handling Failures</a></li><li> <a title="Introduces the idea of systematic fault injection that can be used to uncover conflicting failure recovery policies across services." href="/v0.6/docs/concepts/traffic-management/fault-injection.html">Fault Injection</a></li><li> <a title="Provides a high-level overview of the domain-specific language used by Istio to configure traffic management rules in the service mesh." href="/v0.6/docs/concepts/traffic-management/rules-configuration.html">Rules Configuration</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes Istio's authorization and authentication functionality." href="/v0.6/docs/concepts/security">Security</a> </label><ul class="tree collapse"><li> <a title="Describes Istio's mutual TLS authentication architecture which provides a strong service identity and secure communication channels between services." href="/v0.6/docs/concepts/security/mutual-tls.html">Mutual TLS Authentication</a></li><li> <a title="Describes Istio RBAC which provides access control for services in Istio Mesh." href="/v0.6/docs/concepts/security/rbac.html">Istio Role-Based Access Control (RBAC)</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Introduces the policy control mechanisms." href="/v0.6/docs/concepts/policy-and-control">Policies and Control</a> </label><ul class="tree collapse"><li> <a title="Explains the important notion of attributes, which is a central mechanism for how policies and control are applied to services within the mesh." href="/v0.6/docs/concepts/policy-and-control/attributes.html">Attributes</a></li><li> <a title="Architectural deep-dive into the design of Mixer, which provides the policy and control mechanisms within the service mesh." href="/v0.6/docs/concepts/policy-and-control/mixer.html">Mixer</a></li><li> <a title="An overview of the key concepts used to configure Mixer." href="/v0.6/docs/concepts/policy-and-control/mixer-config.html">Mixer Configuration</a></li></ul></li></ul></div></div></div><div class="card"><div class="card-header" role="tab" id="header20"> <a data-toggle="collapse" href="#collapse20" title="Setup contains instructions for installing the Istio control plane in various environments (e.g., Kubernetes, Consul, etc.), as well as instructions for installing the sidecar in the application deployment." role="button" aria-controls="collapse20"><div> Setup</div></a></div><div id="collapse20" class="collapse" data-parent="#sidebar" role="tabpanel" aria-labelledby="header20"><div class="card-body"><ul class="tree"><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Instructions for installing the Istio control plane on Kubernetes and adding VMs into the mesh." href="/v0.6/docs/setup/kubernetes">Kubernetes</a> </label><ul class="tree collapse"><li> <a title="Quick Start instructions to setup the Istio service mesh in a Kubernetes cluster." href="/v0.6/docs/setup/kubernetes/quick-start.html">Quick Start</a></li><li> <a title="Quick Start instructions to setup the Istio service using Google Kubernetes Engine (GKE)" href="/v0.6/docs/setup/kubernetes/quick-start-gke-dm.html">Quick Start with Google Kubernetes Engine</a></li><li> <a title="Instructions for the setup and configuration of Istio using the Helm package manager." href="/v0.6/docs/setup/kubernetes/helm.html">Istio Helm Chart Instructions</a></li><li> <a title="Instructions on using the included Ansible playbook to perform installation." href="/v0.6/docs/setup/kubernetes/ansible-install.html">Installing with Ansible</a></li><li> <a title="Instructions for installing the Istio sidecar in application pods automatically using the sidecar injector webhook or manually using istioctl CLI." href="/v0.6/docs/setup/kubernetes/sidecar-injection.html">Installing Istio Sidecar</a></li><li> <a title="Instructions for integrating VMs and bare metal hosts into an Istio mesh deployed on Kubernetes." href="/v0.6/docs/setup/kubernetes/mesh-expansion.html">Istio Mesh Expansion</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Instructions for installing the Istio control plane in a Consul based environment, with or without Nomad." href="/v0.6/docs/setup/consul">Nomad & Consul</a> </label><ul class="tree collapse"><li> <a title="Quick Start instructions to setup the Istio service mesh with Docker Compose." href="/v0.6/docs/setup/consul/quick-start.html">Quick Start on Docker</a></li><li> <a title="Instructions for installing the Istio control plane in a Consul based environment, with or without Nomad." href="/v0.6/docs/setup/consul/install.html">Installation</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Instructions for installing the Istio control plane in a Eureka based environment." href="/v0.6/docs/setup/eureka">Eureka</a> </label><ul class="tree collapse"><li> <a title="Quick Start instructions to setup the Istio service mesh with Docker Compose." href="/v0.6/docs/setup/eureka/quick-start.html">Quick Start on Docker</a></li><li> <a title="Instructions for installing the Istio control plane in an Eureka based environment." href="/v0.6/docs/setup/eureka/install.html">Installation</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Instructions for installing the Istio control plane in Cloud Foundry." href="/v0.6/docs/setup/cloudfoundry">Cloud Foundry</a> </label><ul class="tree collapse"><li> <a title="Instructions for installing the Istio control plane in Cloud Foundry." href="/v0.6/docs/setup/cloudfoundry/install.html">Installation</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Instructions for installing the Istio control plane in Apache Mesos." href="/v0.6/docs/setup/mesos">Mesos</a> </label><ul class="tree collapse"><li> <a title="Instructions for installing the Istio control plane in Apache Mesos." href="/v0.6/docs/setup/mesos/install.html">Installation</a></li></ul></li></ul></div></div></div><div class="card"><div class="card-header" role="tab" id="header38"> <a data-toggle="collapse" href="#collapse38" title="Tasks show you how to do a single specific targeted activity with the Istio system." role="button" aria-controls="collapse38"><div> Tasks</div></a></div><div id="collapse38" class="collapse show" data-parent="#sidebar" role="tabpanel" aria-labelledby="header38"><div class="card-body"><ul class="tree"><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes tasks that demonstrate traffic routing features of Istio service mesh." href="/v0.6/docs/tasks/traffic-management">Traffic Management</a> </label><ul class="tree collapse"><li> <a title="This task shows you how to configure dynamic request routing based on weights and HTTP headers." href="/v0.6/docs/tasks/traffic-management/request-routing.html">Configuring Request Routing</a></li><li> <a title="This task shows how to inject delays and test the resiliency of your application." href="/v0.6/docs/tasks/traffic-management/fault-injection.html">Fault Injection</a></li><li> <a title="This task shows you how to migrate traffic from an old to new version of a service." href="/v0.6/docs/tasks/traffic-management/traffic-shifting.html">Traffic Shifting</a></li><li> <a title="This task shows you how to setup request timeouts in Envoy using Istio." href="/v0.6/docs/tasks/traffic-management/request-timeouts.html">Setting Request Timeouts</a></li><li> <a title="Describes how to configure Istio Ingress on Kubernetes." href="/v0.6/docs/tasks/traffic-management/ingress.html">Istio Ingress</a></li><li> <a title="Describes how to configure Istio to route traffic from services in the mesh to external services." href="/v0.6/docs/tasks/traffic-management/egress.html">Control Egress Traffic</a></li><li> <a title="Describes how to configure Istio to route TCP traffic from services in the mesh to external services." href="/v0.6/docs/tasks/traffic-management/egress-tcp.html">Control Egress TCP Traffic</a></li><li> <a title="This task demonstrates the circuit-breaking capability for resilient applications" href="/v0.6/docs/tasks/traffic-management/circuit-breaking.html">Circuit Breaking</a></li><li> <a title="Demonstrates Istio's traffic shadowing/mirroring capabilities" href="/v0.6/docs/tasks/traffic-management/mirroring.html">Mirroring</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes tasks that demonstrate policy enforcement features." href="/v0.6/docs/tasks/policy-enforcement">Policy Enforcement</a> </label><ul class="tree collapse"><li> <a title="This task shows you how to use Istio to dynamically limit the traffic to a service." href="/v0.6/docs/tasks/policy-enforcement/rate-limiting.html">Enabling Rate Limits</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-down'></i> <a class="" title="Describes tasks that demonstrate how to collect telemetry information from the service mesh." href="/v0.6/docs/tasks/telemetry">Metrics, Logs, and Traces</a> </label><ul class="tree"><li> <a title="How to configure the proxies to send tracing requests to Zipkin or Jaeger" href="/v0.6/docs/tasks/telemetry/distributed-tracing.html">Distributed Tracing</a></li><li> <span class="current" title="This task shows you how to configure Istio to collect metrics and logs.">Collecting Metrics and Logs</span></li><li> <a title="This task shows you how to configure Istio to collect metrics for TCP services." href="/v0.6/docs/tasks/telemetry/tcp-metrics.html">Collecting Metrics for TCP services</a></li><li> <a title="This task shows you how to query for Istio Metrics using Prometheus." href="/v0.6/docs/tasks/telemetry/querying-metrics.html">Querying Metrics from Prometheus</a></li><li> <a title="This task shows you how to setup and use the Istio Dashboard to monitor mesh traffic." href="/v0.6/docs/tasks/telemetry/using-istio-dashboard.html">Visualizing Metrics with Grafana</a></li><li> <a title="This task shows you how to generate a graph of services within an Istio mesh." href="/v0.6/docs/tasks/telemetry/servicegraph.html">Generating a Service Graph</a></li><li> <a title="This task shows you how to configure Istio to log to a Fluentd daemon" href="/v0.6/docs/tasks/telemetry/fluentd.html">Logging with Fluentd</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes tasks that help securing the service mesh traffic." href="/v0.6/docs/tasks/security">Security</a> </label><ul class="tree collapse"><li> <a title="This task shows you how to verify and test Istio's automatic mutual TLS authentication." href="/v0.6/docs/tasks/security/mutual-tls.html">Testing Istio mutual TLS authentication</a></li><li> <a title="This task shows how to control access to a service using the Kubernetes labels." href="/v0.6/docs/tasks/security/basic-access-control.html">Setting up Basic Access Control</a></li><li> <a title="This task shows how to securely control access to a service using service accounts." href="/v0.6/docs/tasks/security/secure-access-control.html">Setting up Secure Access Control</a></li><li> <a title="This task shows how to set up role-based access control for services in Istio mesh." href="/v0.6/docs/tasks/security/role-based-access-control.html">Setting up Istio Role-Based Access Control</a></li><li> <a title="This task shows how to change mutual TLS authentication for a single service." href="/v0.6/docs/tasks/security/per-service-mtls.html">Per-service mutual TLS authentication enablement</a></li><li> <a title="This task shows how operators can plug existing certificate and key into Istio CA." href="/v0.6/docs/tasks/security/plugin-ca-cert.html">Plugging in CA certificate and key</a></li><li> <a title="This task shows how to enable Istio CA health check." href="/v0.6/docs/tasks/security/health-check.html">Enabling Istio CA health check</a></li></ul></li></ul></div></div></div><div class="card"><div class="card-header" role="tab" id="header67"> <a data-toggle="collapse" href="#collapse67" title="Guides include a variety of fully working example uses for Istio that you can experiment with." role="button" aria-controls="collapse67"><div> Guides</div></a></div><div id="collapse67" class="collapse" data-parent="#sidebar" role="tabpanel" aria-labelledby="header67"><div class="card-body"><ul class="tree"><li> <a title="This guide deploys a sample application composed of four separate microservices which will be used to demonstrate various features of the Istio service mesh." href="/v0.6/docs/guides/bookinfo.html">Bookinfo</a></li><li> <a title="This guide demonstrates how to use various traffic management capabilities of an Istio service mesh." href="/v0.6/docs/guides/intelligent-routing.html">Intelligent Routing</a></li><li> <a title="This sample demonstrates how to obtain uniform metrics, logs, traces across different services using Istio Mixer and Istio sidecar." href="/v0.6/docs/guides/telemetry.html">In-Depth Telemetry</a></li><li> <a title="This sample deploys the Bookinfo services across Kubernetes and a set of virtual machines, and illustrates how to use the Istio service mesh to control this infrastructure as a single mesh." href="/v0.6/docs/guides/integrating-vms.html">Integrating Virtual Machines</a></li></ul></div></div></div><div class="card"><div class="card-header" role="tab" id="header72"> <a data-toggle="collapse" href="#collapse72" title="The Reference section contains detailed authoritative reference material such as command-line options, configuration options, and API calling parameters." role="button" aria-controls="collapse72"><div> Reference</div></a></div><div id="collapse72" class="collapse" data-parent="#sidebar" role="tabpanel" aria-labelledby="header72"><div class="card-body"><ul class="tree"><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Detailed information on API parameters." href="/v0.6/docs/reference/api">API</a> </label><ul class="tree collapse"><li> <a title="API definitions to interact with Mixer" href="/v0.6/docs/reference/api/istio.mixer.v1.html">Mixer</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Detailed information on configuration options." href="/v0.6/docs/reference/config">Configuration</a> </label><ul class="tree collapse"><li> <a title="Configuration affecting the service mesh as a whole" href="/v0.6/docs/reference/config/istio.mesh.v1alpha1.html">Service Mesh</a></li><li> <a title="Configuration state for the Mixer client library" href="/v0.6/docs/reference/config/istio.mixer.v1.config.client.html">Mixer Client</a></li><li> <a title="Describes the rules used to configure Mixer's policy and telemetry features." href="/v0.6/docs/reference/config/istio.mixer.v1.config.html">Policy and Telemetry Rules</a></li><li> <a title="Configuration affecting resource-based access control" href="/v0.6/docs/reference/config/istio.rbac.v1alpha1.html">RBAC</a></li><li> <a title="Configuration affecting traffic routing" href="/v0.6/docs/reference/config/istio.routing.v1alpha1.html">Route Rules Alpha 1</a></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Detailed information on configuration and API exposed by Mixer." href="/v0.6/docs/reference/config/mixer">Mixer</a> </label><ul class="tree collapse"><li> <a title="Definitions used when creating Mixer templates" href="/v0.6/docs/reference/config/mixer/istio.mixer.adapter.model.v1beta1.html">Mixer Adapter Model</a></li><li> <a title="Value types used with templates" href="/v0.6/docs/reference/config/mixer/istio.mixer.v1.config.descriptor.html">Value Type</a></li><li> <a title="Definitions used when creating Mixer templates" href="/v0.6/docs/reference/config/mixer/istio.mixer.v1.template.html">Template Metadata</a></li><li> <a title="Describes the base attribute vocabulary used for policy and control." href="/v0.6/docs/reference/config/mixer/attribute-vocabulary.html">Attribute Vocabulary</a></li><li> <a title="Mixer config expression language reference." href="/v0.6/docs/reference/config/mixer/expression-language.html">Expression Language</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Generated documentation for Mixer's adapters." href="/v0.6/docs/reference/config/adapters">Adapters</a> </label><ul class="tree collapse"><li> <a title="Adapter for circonus.com's monitoring solution." href="/v0.6/docs/reference/config/adapters/circonus.html">Circonus</a></li><li> <a title="Adapter to deliver metrics to a dogstatsd agent for delivery to DataDog" href="/v0.6/docs/reference/config/adapters/datadog.html">Datadog</a></li><li> <a title="Adapter that always returns a precondition denial." href="/v0.6/docs/reference/config/adapters/denier.html">Denier</a></li><li> <a title="Adapter that delivers logs to a fluentd daemon." href="/v0.6/docs/reference/config/adapters/fluentd.html">Fluentd</a></li><li> <a title="Adapter that extracts information from a Kubernetes environment." href="/v0.6/docs/reference/config/adapters/kubernetesenv.html">Kubernetes Env</a></li><li> <a title="Adapter that performs whitelist or blacklist checks" href="/v0.6/docs/reference/config/adapters/list.html">List</a></li><li> <a title="Adapter for a simple in-memory quota management system." href="/v0.6/docs/reference/config/adapters/memquota.html">Memory quota</a></li><li> <a title="Adapter that implements an Open Policy Agent engine" href="/v0.6/docs/reference/config/adapters/opa.html">OPA</a></li><li> <a title="Adapter that exposes Istio metrics for ingestion by a Prometheus harvester." href="/v0.6/docs/reference/config/adapters/prometheus.html">Prometheus</a></li><li> <a title="Adapter that exposes Istio's Role-Based Access Control model." href="/v0.6/docs/reference/config/adapters/rbac.html">RBAC</a></li><li> <a title="Adapter for a Redis-based quota management system." href="/v0.6/docs/reference/config/adapters/redisquota.html">Redis Quota</a></li><li> <a title="Adapter that delivers logs and metrics to Google Service Control" href="/v0.6/docs/reference/config/adapters/servicecontrol.html">Service Control</a></li><li> <a title="Adapter to deliver logs and metrics to Papertrail and AppOptics backends" href="/v0.6/docs/reference/config/adapters/solarwinds.html">SolarWinds</a></li><li> <a title="Adapter to deliver logs and metrics to Stackdriver" href="/v0.6/docs/reference/config/adapters/stackdriver.html">Stackdriver</a></li><li> <a title="Adapter to deliver metrics to a StatsD backend" href="/v0.6/docs/reference/config/adapters/statsd.html">StatsD</a></li><li> <a title="Adapter for outputting logs and metrics locally." href="/v0.6/docs/reference/config/adapters/stdio.html">Stdio</a></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Generated documentation for Mixer's Templates." href="/v0.6/docs/reference/config/template">Templates</a> </label><ul class="tree collapse"><li> <a title="A template that represents a single API key." href="/v0.6/docs/reference/config/template/apikey.html">API Key</a></li><li> <a title="A template used to represent an access control query." href="/v0.6/docs/reference/config/template/authorization.html">Authorization</a></li><li> <a title="A template that carries no data, useful for testing." href="/v0.6/docs/reference/config/template/checknothing.html">Check Nothing</a></li><li> <a title="A template that is used to control the production of Kubernetes-specific attributes." href="/v0.6/docs/reference/config/template/kubernetes.html">Kubernetes</a></li><li> <a title="A template designed to let you perform list checking operations." href="/v0.6/docs/reference/config/template/listentry.html">List Entry</a></li><li> <a title="A template that represents a single runtime log entry." href="/v0.6/docs/reference/config/template/logentry.html">Log Entry</a></li><li> <a title="A template that represents a single runtime metric." href="/v0.6/docs/reference/config/template/metric.html">Metric</a></li><li> <a title="A template that represents a quota allocation request" href="/v0.6/docs/reference/config/template/quota.html">Quota</a></li><li> <a title="A template that carries no data, useful for testing." href="/v0.6/docs/reference/config/template/reportnothing.html">Report Nothing</a></li><li> <a title="A template used by the Google Service Control adapter." href="/v0.6/docs/reference/config/template/servicecontrolreport.html">Service Control Report</a></li></ul></li></ul></li><li class="sublist"> <label class='tree-toggle'> <i class='fa fa-lg fa-caret-right'></i> <a class="" title="Describes usage and options of the Istio commands and utilities." href="/v0.6/docs/reference/commands">Commands</a> </label><ul class="tree collapse"><li> <a title="Istio Certificate Authority (CA)" href="/v0.6/docs/reference/commands/istio_ca.html">istio_ca</a></li><li> <a title="Istio control interface" href="/v0.6/docs/reference/commands/istioctl.html">istioctl</a></li><li> <a title="Utility to trigger direct calls to Mixer's API." href="/v0.6/docs/reference/commands/mixc.html">mixc</a></li><li> <a title="Mixer is Istio's abstraction on top of infrastructure backends." href="/v0.6/docs/reference/commands/mixs.html">mixs</a></li><li> <a title="Istio security per-node agent" href="/v0.6/docs/reference/commands/node_agent.html">node_agent</a></li><li> <a title="Istio Pilot agent" href="/v0.6/docs/reference/commands/pilot-agent.html">pilot-agent</a></li><li> <a title="Istio Pilot" href="/v0.6/docs/reference/commands/pilot-discovery.html">pilot-discovery</a></li><li> <a title="Kubernetes webhook for automatic Istio sidecar injection" href="/v0.6/docs/reference/commands/sidecar-injector.html">sidecar-injector</a></li></ul></li><li> <a title="How to write Istio config YAML content." href="/v0.6/docs/reference/writing-config.html">Writing Configuration</a></li></ul></div></div></div></div></nav></div><div class="col-12 col-md-9 col-lg-7 col-xl-8"><p class="d-md-none"> <label class="sidebar-toggler" data-toggle="offcanvas"> <i class="fa fa-chevron-right"></i> </label></p><main role="main"><h1>Collecting Metrics and Logs</h1><p>This task shows how to configure Istio to automatically gather telemetry for services in a mesh. At the end of this task, a new metric and a new log stream will be enabled for calls to services within your mesh.</p><p>The <a href="/v0.6/docs/guides/bookinfo.html">Bookinfo</a> sample application is used as the example application throughout this task.</p><h2 id="before-you-begin">Before you begin</h2><ul><li><p><a href="/v0.6/docs/setup/">Install Istio</a> in your cluster and deploy an application. This task assumes that Mixer is setup in a default configuration (<code class="highlighter-rouge">--configDefaultNamespace=istio-system</code>). If you use a different value, update the configuration and commands in this task to match the value.</p></li><li><p>Install the Prometheus add-on. Prometheus will be used to verify task success.</p><div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kubectl apply <span class="nt">-f</span> install/kubernetes/addons/prometheus.yaml
|
||
</code></pre></div></div><p>See <a href="https://prometheus.io">Prometheus</a> for details.</p></li></ul><h2 id="collecting-new-telemetry-data">Collecting new telemetry data</h2><ol><li><p>Create a new YAML file to hold configuration for the new metric and log stream that Istio will generate and collect automatically.</p><p>Save the following as <code class="highlighter-rouge">new_telemetry.yaml</code>:</p><div class="language-yaml highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1"># Configuration for metric instances</span>
|
||
<span class="na">apiVersion</span><span class="pi">:</span> <span class="s2">"</span><span class="s">config.istio.io/v1alpha2"</span>
|
||
<span class="na">kind</span><span class="pi">:</span> <span class="s">metric</span>
|
||
<span class="na">metadata</span><span class="pi">:</span>
|
||
<span class="na">name</span><span class="pi">:</span> <span class="s">doublerequestcount</span>
|
||
<span class="na">namespace</span><span class="pi">:</span> <span class="s">istio-system</span>
|
||
<span class="na">spec</span><span class="pi">:</span>
|
||
<span class="na">value</span><span class="pi">:</span> <span class="s2">"</span><span class="s">2"</span> <span class="c1"># count each request twice</span>
|
||
<span class="na">dimensions</span><span class="pi">:</span>
|
||
<span class="na">source</span><span class="pi">:</span> <span class="s">source.service | "unknown"</span>
|
||
<span class="na">destination</span><span class="pi">:</span> <span class="s">destination.service | "unknown"</span>
|
||
<span class="na">message</span><span class="pi">:</span> <span class="s1">'</span><span class="s">"twice</span><span class="nv"> </span><span class="s">the</span><span class="nv"> </span><span class="s">fun!"'</span>
|
||
<span class="na">monitored_resource_type</span><span class="pi">:</span> <span class="s1">'</span><span class="s">"UNSPECIFIED"'</span>
|
||
<span class="nn">---</span>
|
||
<span class="c1"># Configuration for a Prometheus handler</span>
|
||
<span class="na">apiVersion</span><span class="pi">:</span> <span class="s2">"</span><span class="s">config.istio.io/v1alpha2"</span>
|
||
<span class="na">kind</span><span class="pi">:</span> <span class="s">prometheus</span>
|
||
<span class="na">metadata</span><span class="pi">:</span>
|
||
<span class="na">name</span><span class="pi">:</span> <span class="s">doublehandler</span>
|
||
<span class="na">namespace</span><span class="pi">:</span> <span class="s">istio-system</span>
|
||
<span class="na">spec</span><span class="pi">:</span>
|
||
<span class="na">metrics</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">double_request_count</span> <span class="c1"># Prometheus metric name</span>
|
||
<span class="na">instance_name</span><span class="pi">:</span> <span class="s">doublerequestcount.metric.istio-system</span> <span class="c1"># Mixer instance name (fully-qualified)</span>
|
||
<span class="na">kind</span><span class="pi">:</span> <span class="s">COUNTER</span>
|
||
<span class="na">label_names</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="s">source</span>
|
||
<span class="pi">-</span> <span class="s">destination</span>
|
||
<span class="pi">-</span> <span class="s">message</span>
|
||
<span class="nn">---</span>
|
||
<span class="c1"># Rule to send metric instances to a Prometheus handler</span>
|
||
<span class="na">apiVersion</span><span class="pi">:</span> <span class="s2">"</span><span class="s">config.istio.io/v1alpha2"</span>
|
||
<span class="na">kind</span><span class="pi">:</span> <span class="s">rule</span>
|
||
<span class="na">metadata</span><span class="pi">:</span>
|
||
<span class="na">name</span><span class="pi">:</span> <span class="s">doubleprom</span>
|
||
<span class="na">namespace</span><span class="pi">:</span> <span class="s">istio-system</span>
|
||
<span class="na">spec</span><span class="pi">:</span>
|
||
<span class="na">actions</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="na">handler</span><span class="pi">:</span> <span class="s">doublehandler.prometheus</span>
|
||
<span class="na">instances</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="s">doublerequestcount.metric</span>
|
||
<span class="nn">---</span>
|
||
<span class="c1"># Configuration for logentry instances</span>
|
||
<span class="na">apiVersion</span><span class="pi">:</span> <span class="s2">"</span><span class="s">config.istio.io/v1alpha2"</span>
|
||
<span class="na">kind</span><span class="pi">:</span> <span class="s">logentry</span>
|
||
<span class="na">metadata</span><span class="pi">:</span>
|
||
<span class="na">name</span><span class="pi">:</span> <span class="s">newlog</span>
|
||
<span class="na">namespace</span><span class="pi">:</span> <span class="s">istio-system</span>
|
||
<span class="na">spec</span><span class="pi">:</span>
|
||
<span class="na">severity</span><span class="pi">:</span> <span class="s1">'</span><span class="s">"warning"'</span>
|
||
<span class="na">timestamp</span><span class="pi">:</span> <span class="s">request.time</span>
|
||
<span class="na">variables</span><span class="pi">:</span>
|
||
<span class="na">source</span><span class="pi">:</span> <span class="s">source.labels["app"] | source.service | "unknown"</span>
|
||
<span class="na">user</span><span class="pi">:</span> <span class="s">source.user | "unknown"</span>
|
||
<span class="na">destination</span><span class="pi">:</span> <span class="s">destination.labels["app"] | destination.service | "unknown"</span>
|
||
<span class="na">responseCode</span><span class="pi">:</span> <span class="s">response.code | 0</span>
|
||
<span class="na">responseSize</span><span class="pi">:</span> <span class="s">response.size | 0</span>
|
||
<span class="na">latency</span><span class="pi">:</span> <span class="s">response.duration | "0ms"</span>
|
||
<span class="na">monitored_resource_type</span><span class="pi">:</span> <span class="s1">'</span><span class="s">"UNSPECIFIED"'</span>
|
||
<span class="nn">---</span>
|
||
<span class="c1"># Configuration for a stdio handler</span>
|
||
<span class="na">apiVersion</span><span class="pi">:</span> <span class="s2">"</span><span class="s">config.istio.io/v1alpha2"</span>
|
||
<span class="na">kind</span><span class="pi">:</span> <span class="s">stdio</span>
|
||
<span class="na">metadata</span><span class="pi">:</span>
|
||
<span class="na">name</span><span class="pi">:</span> <span class="s">newhandler</span>
|
||
<span class="na">namespace</span><span class="pi">:</span> <span class="s">istio-system</span>
|
||
<span class="na">spec</span><span class="pi">:</span>
|
||
<span class="na">severity_levels</span><span class="pi">:</span>
|
||
<span class="na">warning</span><span class="pi">:</span> <span class="s">1</span> <span class="c1"># Params.Level.WARNING</span>
|
||
<span class="na">outputAsJson</span><span class="pi">:</span> <span class="no">true</span>
|
||
<span class="nn">---</span>
|
||
<span class="c1"># Rule to send logentry instances to a stdio handler</span>
|
||
<span class="na">apiVersion</span><span class="pi">:</span> <span class="s2">"</span><span class="s">config.istio.io/v1alpha2"</span>
|
||
<span class="na">kind</span><span class="pi">:</span> <span class="s">rule</span>
|
||
<span class="na">metadata</span><span class="pi">:</span>
|
||
<span class="na">name</span><span class="pi">:</span> <span class="s">newlogstdio</span>
|
||
<span class="na">namespace</span><span class="pi">:</span> <span class="s">istio-system</span>
|
||
<span class="na">spec</span><span class="pi">:</span>
|
||
<span class="na">match</span><span class="pi">:</span> <span class="s2">"</span><span class="s">true"</span> <span class="c1"># match for all requests</span>
|
||
<span class="na">actions</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="na">handler</span><span class="pi">:</span> <span class="s">newhandler.stdio</span>
|
||
<span class="na">instances</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="s">newlog.logentry</span>
|
||
<span class="nn">---</span>
|
||
</code></pre></div></div></li><li><p>Push the new configuration.</p><div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>istioctl create <span class="nt">-f</span> new_telemetry.yaml
|
||
</code></pre></div></div><p>The expected output is similar to:</p><div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Created config metric/istio-system/doublerequestcount at revision 1973035
|
||
Created config prometheus/istio-system/doublehandler at revision 1973036
|
||
Created config rule/istio-system/doubleprom at revision 1973037
|
||
Created config logentry/istio-system/newlog at revision 1973038
|
||
Created config stdio/istio-system/newhandler at revision 1973039
|
||
Created config rule/istio-system/newlogstdio at revision 1973041
|
||
</code></pre></div></div></li><li><p>Send traffic to the sample application.</p><p>For the Bookinfo sample, visit <code class="highlighter-rouge">http://$GATEWAY_URL/productpage</code> in your web browser or issue the following command:</p><div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>curl http://<span class="nv">$GATEWAY_URL</span>/productpage
|
||
</code></pre></div></div></li><li><p>Verify that the new metric values are being generated and collected.</p><p>In a Kubernetes environment, setup port-forwarding for Prometheus by executing the following command:</p><div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kubectl <span class="nt">-n</span> istio-system port-forward <span class="k">$(</span>kubectl <span class="nt">-n</span> istio-system get pod <span class="nt">-l</span> <span class="nv">app</span><span class="o">=</span>prometheus <span class="nt">-o</span> <span class="nv">jsonpath</span><span class="o">=</span><span class="s1">'{.items[0].metadata.name}'</span><span class="k">)</span> 9090:9090 &
|
||
</code></pre></div></div><p>View values for the new metric via the <a href="http://localhost:9090/graph#%5B%7B%22range_input%22%3A%221h%22%2C%22expr%22%3A%22istio_double_request_count%22%2C%22tab%22%3A1%7D%5D">Prometheus UI</a>.</p><p>The provided link opens the Prometheus UI and executes a query for values of the <code class="highlighter-rouge">istio_double_request_count</code> metric. The table displayed in the <strong>Console</strong> tab includes entries similar to:</p><div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>istio_double_request_count{destination="details.default.svc.cluster.local",instance="istio-mixer.istio-system:42422",job="istio-mesh",message="twice the fun!",source="productpage.default.svc.cluster.local"} 2
|
||
istio_double_request_count{destination="ingress.istio-system.svc.cluster.local",instance="istio-mixer.istio-system:42422",job="istio-mesh",message="twice the fun!",source="unknown"} 2
|
||
istio_double_request_count{destination="productpage.default.svc.cluster.local",instance="istio-mixer.istio-system:42422",job="istio-mesh",message="twice the fun!",source="ingress.istio-system.svc.cluster.local"} 2
|
||
istio_double_request_count{destination="reviews.default.svc.cluster.local",instance="istio-mixer.istio-system:42422",job="istio-mesh",message="twice the fun!",source="productpage.default.svc.cluster.local"} 2
|
||
</code></pre></div></div><p>For more on querying Prometheus for metric values, see the <a href="/v0.6/docs/tasks/telemetry/querying-metrics.html">Querying Istio Metrics</a> Task.</p></li><li><p>Verify that the logs stream has been created and is being populated for requests.</p><p>In a Kubernetes environment, search through the logs for the Mixer pod as follows:</p><div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kubectl <span class="nt">-n</span> istio-system logs <span class="k">$(</span>kubectl <span class="nt">-n</span> istio-system get pods <span class="nt">-l</span> <span class="nv">istio</span><span class="o">=</span>mixer <span class="nt">-o</span> <span class="nv">jsonpath</span><span class="o">=</span><span class="s1">'{.items[0].metadata.name}'</span><span class="k">)</span> mixer | <span class="nb">grep</span> <span class="se">\"</span>instance<span class="se">\"</span>:<span class="se">\"</span>newlog.logentry.istio-system<span class="se">\"</span>
|
||
</code></pre></div></div><p>The expected output is similar to:</p><div class="language-json highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="p">{</span><span class="s2">"level"</span><span class="p">:</span><span class="s2">"warn"</span><span class="p">,</span><span class="s2">"ts"</span><span class="p">:</span><span class="s2">"2017-09-21T04:33:31.249Z"</span><span class="p">,</span><span class="s2">"instance"</span><span class="p">:</span><span class="s2">"newlog.logentry.istio-system"</span><span class="p">,</span><span class="s2">"destination"</span><span class="p">:</span><span class="s2">"details"</span><span class="p">,</span><span class="s2">"latency"</span><span class="p">:</span><span class="s2">"6.848ms"</span><span class="p">,</span><span class="s2">"responseCode"</span><span class="p">:</span><span class="mi">200</span><span class="p">,</span><span class="s2">"responseSize"</span><span class="p">:</span><span class="mi">178</span><span class="p">,</span><span class="s2">"source"</span><span class="p">:</span><span class="s2">"productpage"</span><span class="p">,</span><span class="s2">"user"</span><span class="p">:</span><span class="s2">"unknown"</span><span class="p">}</span><span class="w">
|
||
</span><span class="p">{</span><span class="s2">"level"</span><span class="p">:</span><span class="s2">"warn"</span><span class="p">,</span><span class="s2">"ts"</span><span class="p">:</span><span class="s2">"2017-09-21T04:33:31.291Z"</span><span class="p">,</span><span class="s2">"instance"</span><span class="p">:</span><span class="s2">"newlog.logentry.istio-system"</span><span class="p">,</span><span class="s2">"destination"</span><span class="p">:</span><span class="s2">"ratings"</span><span class="p">,</span><span class="s2">"latency"</span><span class="p">:</span><span class="s2">"6.753ms"</span><span class="p">,</span><span class="s2">"responseCode"</span><span class="p">:</span><span class="mi">200</span><span class="p">,</span><span class="s2">"responseSize"</span><span class="p">:</span><span class="mi">48</span><span class="p">,</span><span class="s2">"source"</span><span class="p">:</span><span class="s2">"reviews"</span><span class="p">,</span><span class="s2">"user"</span><span class="p">:</span><span class="s2">"unknown"</span><span class="p">}</span><span class="w">
|
||
</span><span class="p">{</span><span class="s2">"level"</span><span class="p">:</span><span class="s2">"warn"</span><span class="p">,</span><span class="s2">"ts"</span><span class="p">:</span><span class="s2">"2017-09-21T04:33:31.263Z"</span><span class="p">,</span><span class="s2">"instance"</span><span class="p">:</span><span class="s2">"newlog.logentry.istio-system"</span><span class="p">,</span><span class="s2">"destination"</span><span class="p">:</span><span class="s2">"reviews"</span><span class="p">,</span><span class="s2">"latency"</span><span class="p">:</span><span class="s2">"39.848ms"</span><span class="p">,</span><span class="s2">"responseCode"</span><span class="p">:</span><span class="mi">200</span><span class="p">,</span><span class="s2">"responseSize"</span><span class="p">:</span><span class="mi">379</span><span class="p">,</span><span class="s2">"source"</span><span class="p">:</span><span class="s2">"productpage"</span><span class="p">,</span><span class="s2">"user"</span><span class="p">:</span><span class="s2">"unknown"</span><span class="p">}</span><span class="w">
|
||
</span><span class="p">{</span><span class="s2">"level"</span><span class="p">:</span><span class="s2">"warn"</span><span class="p">,</span><span class="s2">"ts"</span><span class="p">:</span><span class="s2">"2017-09-21T04:33:31.239Z"</span><span class="p">,</span><span class="s2">"instance"</span><span class="p">:</span><span class="s2">"newlog.logentry.istio-system"</span><span class="p">,</span><span class="s2">"destination"</span><span class="p">:</span><span class="s2">"productpage"</span><span class="p">,</span><span class="s2">"latency"</span><span class="p">:</span><span class="s2">"67.675ms"</span><span class="p">,</span><span class="s2">"responseCode"</span><span class="p">:</span><span class="mi">200</span><span class="p">,</span><span class="s2">"responseSize"</span><span class="p">:</span><span class="mi">5599</span><span class="p">,</span><span class="s2">"source"</span><span class="p">:</span><span class="s2">"ingress.istio-system.svc.cluster.local"</span><span class="p">,</span><span class="s2">"user"</span><span class="p">:</span><span class="s2">"unknown"</span><span class="p">}</span><span class="w">
|
||
</span><span class="p">{</span><span class="s2">"level"</span><span class="p">:</span><span class="s2">"warn"</span><span class="p">,</span><span class="s2">"ts"</span><span class="p">:</span><span class="s2">"2017-09-21T04:33:31.233Z"</span><span class="p">,</span><span class="s2">"instance"</span><span class="p">:</span><span class="s2">"newlog.logentry.istio-system"</span><span class="p">,</span><span class="s2">"destination"</span><span class="p">:</span><span class="s2">"ingress.istio-system.svc.cluster.local"</span><span class="p">,</span><span class="s2">"latency"</span><span class="p">:</span><span class="s2">"74.47ms"</span><span class="p">,</span><span class="s2">"responseCode"</span><span class="p">:</span><span class="mi">200</span><span class="p">,</span><span class="s2">"responseSize"</span><span class="p">:</span><span class="mi">5599</span><span class="p">,</span><span class="s2">"source"</span><span class="p">:</span><span class="s2">"unknown"</span><span class="p">,</span><span class="s2">"user"</span><span class="p">:</span><span class="s2">"unknown"</span><span class="p">}</span><span class="w">
|
||
</span></code></pre></div></div></li></ol><h2 id="understanding-the-telemetry-configuration">Understanding the telemetry configuration</h2><p>In this task, you added Istio configuration that instructed Mixer to automatically generate and report a new metric and a new log stream for all traffic within the mesh.</p><p>The added configuration controlled three pieces of Mixer functionality:</p><ol><li>Generation of <em>instances</em> (in this example, metric values and log entries) from Istio attributes</li><li>Creation of <em>handlers</em> (configured Mixer adapters) capable of processing generated <em>instances</em></li><li>Dispatch of <em>instances</em> to <em>handlers</em> according to a set of <em>rules</em></li></ol><h3 id="understanding-the-metrics-configuration">Understanding the metrics configuration</h3><p>The metrics configuration directs Mixer to send metric values to Prometheus. It uses three stanzas (or blocks) of configuration: <em>instance</em> configuration, <em>handler</em> configuration, and <em>rule</em> configuration.</p><p>The <code class="highlighter-rouge">kind: metric</code> stanza of config defines a schema for generated metric values (or <em>instances</em>) for a new metric named <code class="highlighter-rouge">doublerequestcount</code>. This instance configuration tells Mixer <em>how</em> to generate metric values for any given request, based on the attributes reported by Envoy (and generated by Mixer itself).</p><p>For each instance of <code class="highlighter-rouge">doublerequestcount.metric</code>, the config directs Mixer to supply a value of <code class="highlighter-rouge">2</code> for the instance. Because Istio generates an instance for each request, this means that this metric records a value equal to twice the total number of requests received.</p><p>A set of <code class="highlighter-rouge">dimensions</code> are specified for each <code class="highlighter-rouge">doublerequestcount.metric</code> instance. Dimensions provide a way to slice, aggregate, and analyze metric data according to different needs and directions of inquiry. For instance, it may be desirable to only consider requests for a certain destination service when troubleshooting application behavior.</p><p>The configuration instructs Mixer to populate values for these dimensions based on attribute values and literal values. For instance, for the <code class="highlighter-rouge">source</code> dimension, the new config requests that the value be taken from the <code class="highlighter-rouge">source.service</code> attribute. If that attribute value is not populated, the rule instructs Mixer to use a default value of <code class="highlighter-rouge">"unknown"</code>. For the <code class="highlighter-rouge">message</code> dimension, a literal value of <code class="highlighter-rouge">"twice the fun!"</code> will be used for all instances.</p><p>The <code class="highlighter-rouge">kind: prometheus</code> stanza of config defines a <em>handler</em> named <code class="highlighter-rouge">doublehandler</code>. The handler <code class="highlighter-rouge">spec</code> configures how the Prometheus adapter code translates received metric instances into prometheus-formatted values that can be processed by a Prometheus backend. This configuration specified a new Prometheus metric named <code class="highlighter-rouge">double_request_count</code>. The Prometheus adapter prepends the <code class="highlighter-rouge">istio_</code> namespace to all metric names, therefore this metric will show up in Promethus as <code class="highlighter-rouge">istio_double_request_count</code>. The metric has three labels matching the dimensions configured for <code class="highlighter-rouge">doublerequestcount.metric</code> instances.</p><p>For <code class="highlighter-rouge">kind: prometheus</code> handlers, Mixer instances are matched to Prometheus metrics via the <code class="highlighter-rouge">instance_name</code> parameter. The <code class="highlighter-rouge">instance_name</code> values must be the fully-qualified name for Mixer instances (example: <code class="highlighter-rouge">doublerequestcount.metric.istio-system</code>).</p><p>The <code class="highlighter-rouge">kind: rule</code> stanza of config defines a new <em>rule</em> named <code class="highlighter-rouge">doubleprom</code>. The rule directs Mixer to send all <code class="highlighter-rouge">doublerequestcount.metric</code> instances to the <code class="highlighter-rouge">doublehandler.prometheus</code> handler. Because there is no <code class="highlighter-rouge">match</code> clause in the rule, and because the rule is in the configured default configuration namespace (<code class="highlighter-rouge">istio-system</code>), the rule is executed for all requests in the mesh.</p><h3 id="understanding-the-logs-configuration">Understanding the logs configuration</h3><p>The logs configuration directs Mixer to send log entries to stdout. It uses three stanzas (or blocks) of configuration: <em>instance</em> configuration, <em>handler</em> configuration, and <em>rule</em> configuration.</p><p>The <code class="highlighter-rouge">kind: logentry</code> stanza of config defines a schema for generated log entries (or <em>instances</em>) named <code class="highlighter-rouge">newlog</code>. This instance configuration tells Mixer <em>how</em> to generate log entries for requests based on the attributes reported by Envoy.</p><p>The <code class="highlighter-rouge">severity</code> parameter is used to indicate the log level for any generated <code class="highlighter-rouge">logentry</code>. In this example, a literal value of <code class="highlighter-rouge">"warning"</code> is used. This value will be mapped to supported logging levels by a <code class="highlighter-rouge">logentry</code> <em>handler</em>.</p><p>The <code class="highlighter-rouge">timestamp</code> parameter provides time information for all log entries. In this example, the time is provided by the attribute value of <code class="highlighter-rouge">request.time</code>, as provided by Envoy.</p><p>The <code class="highlighter-rouge">variables</code> parameter allows operators to configure what values should be included in each <code class="highlighter-rouge">logentry</code>. A set of expressions controls the mapping from Istio attributes and literal values into the values that constitute a <code class="highlighter-rouge">logentry</code>. In this example, each <code class="highlighter-rouge">logentry</code> instance has a field named <code class="highlighter-rouge">latency</code> populated with the value from the attribute <code class="highlighter-rouge">response.duration</code>. If there is no known value for <code class="highlighter-rouge">response.duration</code>, the <code class="highlighter-rouge">latency</code> field will be set to a duration of <code class="highlighter-rouge">0ms</code>.</p><p>The <code class="highlighter-rouge">kind: stdio</code> stanza of config defines a <em>handler</em> named <code class="highlighter-rouge">newhandler</code>. The handler <code class="highlighter-rouge">spec</code> configures how the <code class="highlighter-rouge">stdio</code> adapter code processes received <code class="highlighter-rouge">logentry</code> instances. The <code class="highlighter-rouge">severity_levels</code> parameter controls how <code class="highlighter-rouge">logentry</code> values for the <code class="highlighter-rouge">severity</code> field are mapped to supported logging levels. Here, the value of <code class="highlighter-rouge">"warning"</code> is mapped to the <code class="highlighter-rouge">WARNING</code> log level. The <code class="highlighter-rouge">outputAsJson</code> parameter directs the adapter to generate JSON-formatted log lines.</p><p>The <code class="highlighter-rouge">kind: rule</code> stanza of config defines a new <em>rule</em> named <code class="highlighter-rouge">newlogstdio</code>. The rule directs Mixer to send all <code class="highlighter-rouge">newlog.logentry</code> instances to the <code class="highlighter-rouge">newhandler.stdio</code> handler. Because the <code class="highlighter-rouge">match</code> parameter is set to <code class="highlighter-rouge">true</code>, the rule is executed for all requests in the mesh.</p><p>A <code class="highlighter-rouge">match: true</code> expression in the rule specification is not required to configure a rule to be executed for all requests. Omitting the entire <code class="highlighter-rouge">match</code> parameter from the <code class="highlighter-rouge">spec</code> is equivalent to setting <code class="highlighter-rouge">match: true</code>. It is included here to illustrate how to use <code class="highlighter-rouge">match</code> expressions to control rule execution.</p><h2 id="cleanup">Cleanup</h2><ul><li><p>Remove the new telemetry configuration:</p><div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>istioctl delete <span class="nt">-f</span> new_telemetry.yaml
|
||
</code></pre></div></div></li><li><p>If you are not planning to explore any follow-on tasks, refer to the <a href="/v0.6/docs/guides/bookinfo.html#cleanup">Bookinfo cleanup</a> instructions to shutdown the application.</p></li></ul><h2 id="whats-next">What’s next</h2><ul><li><p>Learn more about <a href="/v0.6/docs/concepts/policy-and-control/mixer.html">Mixer</a> and <a href="/v0.6/docs/concepts/policy-and-control/mixer-config.html">Mixer Config</a>.</p></li><li><p>Discover the full <a href="/v0.6/docs/reference/config/mixer/attribute-vocabulary.html">Attribute Vocabulary</a>.</p></li><li><p>Read the reference guide to <a href="/v0.6/docs/reference/writing-config.html">Writing Config</a>.</p></li><li><p>Refer to the <a href="/v0.6/docs/guides/telemetry.html">In-Depth Telemetry</a> guide.</p></li></ul></main></div><div class="col-12 col-md-2 d-none d-lg-block"><nav class="toc"><div class="spacer"></div><div class="directory" role="directory"><ul><li><a href="#before-you-begin">Before you begin</a></li><li><a href="#collecting-new-telemetry-data">Collecting new telemetry data</a></li><li><a href="#understanding-the-telemetry-configuration">Understanding the telemetry configuration</a><ul><li><a href="#understanding-the-metrics-configuration">Understanding the metrics configuration</a></li><li><a href="#understanding-the-logs-configuration">Understanding the logs configuration</a></li></ul></li><li><a href="#cleanup">Cleanup</a></li><li><a href="#whats-next">What’s next</a></li></ul></div></nav></div></div></div><div class="footer"><footer><div class="container-fluid"><div class="row"><div class="col-sm-2"></div><nav class=" col-12 col-sm-3" role="navigation"><ul class="first"><li><a class="header" href="/v0.6/docs/">Docs</a></li><li><a href="/v0.6/docs/concepts/">Concepts</a></li><li><a href="/v0.6/docs/setup/">Setup</a></li><li><a href="/v0.6/docs/tasks/">Tasks</a></li><li><a href="/v0.6/docs/guides/">Guides</a></li><li><a href="/v0.6/docs/reference/">Reference</a></li></ul></nav><nav class="col-12 col-sm-3" role="navigation"><ul><li><a class="header" href="/v0.6/help/">Help</a></li><li><a href="/v0.6/help/faq/index.html">FAQ</a></li><li><a href="/v0.6/help/glossary.html">Glossary</a></li><li><a href="/v0.6/help/troubleshooting.html">Troubleshooting</a></li><li><a href="/v0.6/help/bugs.html">Report Bugs</a></li><li><a href="https://github.com/istio/istio.github.io/issues/new?title=Issue with _docs/tasks/telemetry/metrics-logs.md" target="_blank" rel="noopener">Doc Bugs & Gaps</a></li><li><a href="https://github.com/istio/istio.github.io/edit/master/_docs/tasks/telemetry/metrics-logs.md" target="_blank" rel="noopener">Edit This Page</a></li></ul></nav><nav class="col-12 col-sm-3" role="navigation"><ul><li><a class="header" href="/v0.6/community.html">Community</a></li><li> <a href="https://groups.google.com/forum/#!forum/istio-users" target="_blank" rel="noopener">User</a> | <a href="https://groups.google.com/forum/#!forum/istio-dev" target="_blank" rel="noopener">Dev Mailing Lists</a></li><li><a href="https://twitter.com/IstioMesh" target="_blank" rel="noopener">Twitter</a></li><li><a href="https://stackoverflow.com/questions/tagged/istio" target="_blank" rel="noopener">Stack Overflow</a></li><li><a href="https://github.com/istio/community/" target="_blank" rel="noopener">GitHub</a></li><li><a href="https://github.com/istio/community/blob/master/WORKING-GROUPS.md" target="_blank" rel="noopener">Working Groups</a></li></ul></nav></div><div class="row"><div class="col-12"><p class="description text-center" role="contentinfo"> Istio Archive 0.6, Copyright © 2018 Istio Authors<br> Archived on 02-Apr-2018</p></div></div></div></footer></div><script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js"></script> <script src="https://www.google.com/cse/brand?form=searchbox"></script> <script src="/v0.6/js/misc.min.js"></script></body></html>
|