istio.io/archive/v1.8/faq/metrics-and-logs/index.html

79 lines
19 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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="Metrics and Logs FAQ"><meta name=description content="Metrics and Logs Q & A."><meta name=keywords content="microservices,services,mesh"><meta property="og:title" content="Metrics and Logs FAQ"><meta property="og:type" content="website"><meta property="og:description" content="Metrics and Logs Q & A."><meta property="og:url" content="/v1.8/faq/metrics-and-logs/"><meta property="og:image" content="/v1.8/img/istio-whitelogo-bluebackground-framed.svg"><meta property="og:image:alt" content="Istio Logo"><meta property="og:image:width" content="112"><meta property="og:image:height" content="150"><meta property="og:site_name" content="Istio"><meta name=twitter:card content="summary"><meta name=twitter:site content="@IstioMesh"><title>Istioldie 1.8 / Metrics and Logs FAQ</title><script async src="https://www.googletagmanager.com/gtag/js?id=UA-98480406-2"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}
gtag('js',new Date());gtag('config','UA-98480406-2');</script><link rel=alternate type=application/rss+xml title="Istio Blog" href=/v1.8/blog/feed.xml><link rel=alternate type=application/rss+xml title="Istio News" href=/v1.8/news/feed.xml><link rel=alternate type=application/rss+xml title="Istio Blog and News" href=/v1.8/feed.xml><link rel="shortcut icon" href=/v1.8/favicons/favicon.ico><link rel=apple-touch-icon href=/v1.8/favicons/apple-touch-icon-180x180.png sizes=180x180><link rel=icon type=image/png href=/v1.8/favicons/favicon-16x16.png sizes=16x16><link rel=icon type=image/png href=/v1.8/favicons/favicon-32x32.png sizes=32x32><link rel=icon type=image/png href=/v1.8/favicons/android-36x36.png sizes=36x36><link rel=icon type=image/png href=/v1.8/favicons/android-48x48.png sizes=48x48><link rel=icon type=image/png href=/v1.8/favicons/android-72x72.png sizes=72x72><link rel=icon type=image/png href=/v1.8/favicons/android-96x96.png sizes=96xW96><link rel=icon type=image/png href=/v1.8/favicons/android-144x144.png sizes=144x144><link rel=icon type=image/png href=/v1.8/favicons/android-192x192.png sizes=192x192><link rel=manifest href=/v1.8/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=Work+Sans:400|Chivo:400|Work+Sans:500,300,600,300italic,400italic,500italic,600italic|Chivo:500,300,600,300italic,400italic,500italic,600italic"><link rel=stylesheet href=/v1.8/css/all.css><script src=/v1.8/js/themes_init.min.js></script></head><body class="language-unknown archive-site"><script>const branchName="release-1.8";const docTitle="Metrics and Logs FAQ";const iconFile="\/v1.8/img/icons.svg";const buttonCopy='Copy to clipboard';const buttonPrint='Print';const buttonDownload='Download';</script><script src="https://www.google.com/cse/brand?form=search-form" defer></script><script src=/v1.8/js/all.min.js data-manual defer></script><header><nav><a id=brand href=/v1.8/><span class=logo><svg viewBox="0 0 300 300"><circle cx="150" cy="150" r="146" stroke-width="2"/><polygon points="65 240 225 240 125 270"/><polygon points="65 230 125 220 125 110"/><polygon points="135 220 225 230 135 30"/></svg></span><span class=name>Istioldie 1.8</span></a><div id=hamburger><svg class="icon hamburger"><use xlink:href="/v1.8/img/icons.svg#hamburger"/></svg></div><div id=header-links><a title="Learn how to deploy, use, and operate Istio." href=/v1.8/docs/>Docs</a>
<a title="Posts about using Istio." href=/v1.8/blog/2020/>Blog<i class=dot data-prefix=/blog></i></a>
<a title="Timely news about the Istio project." href=/v1.8/news/>News<i class=dot data-prefix=/news></i></a>
<a class=current title="Frequently Asked Questions about Istio." href=/v1.8/faq/>FAQ</a>
<a title="Get a bit more in-depth info about the Istio project." href=/v1.8/about/>About</a><div class=menu><button id=gearDropdownButton class=menu-trigger title="Options and settings" aria-label="Options and Settings" aria-controls=gearDropdownContent><svg class="icon gear"><use xlink:href="/v1.8/img/icons.svg#gear"/></svg></button><div id=gearDropdownContent class=menu-content aria-labelledby=gearDropdownButton role=menu><a tabindex=-1 role=menuitem lang=en id=switch-lang-en class=active>English</a>
<a tabindex=-1 role=menuitem lang=zh id=switch-lang-zh>中文</a><div role=separator></div><a tabindex=-1 role=menuitem class=active id=light-theme-item>Light Theme</a>
<a tabindex=-1 role=menuitem id=dark-theme-item>Dark Theme</a><div role=separator></div><a tabindex=-1 role=menuitem id=syntax-coloring-item>Color Examples</a><div role=separator></div><h6>Other versions of this site</h6><a tabindex=-1 role=menuitem onclick="navigateToUrlOrRoot('https://istio.io/faq\/metrics-and-logs\/');return false;">Current Release</a>
<a tabindex=-1 role=menuitem onclick="navigateToUrlOrRoot('https://preliminary.istio.io/faq\/metrics-and-logs\/');return false;">Next Release</a>
<a tabindex=-1 role=menuitem href=https://istio.io/archive>Older Releases</a></div></div><button id=search-show title="Search this site" aria-label=Search><svg class="icon magnifier"><use xlink:href="/v1.8/img/icons.svg#magnifier"/></svg></button></div><form id=search-form name=cse role=search><input type=hidden name=cx value=002184991200833970123:iwwf17ikgf4>
<input type=hidden name=ie value=utf-8>
<input type=hidden name=hl value=en>
<input type=hidden id=search-page-url value=/v1.8/search>
<input id=search-textbox class=form-control name=q type=search aria-label="Search this site">
<button id=search-close title="Cancel search" type=reset aria-label="Cancel search"><svg class="icon cancel-x"><use xlink:href="/v1.8/img/icons.svg#cancel-x"/></svg></button></form></nav></header><div class=banner-container></div><main class="primary notoc"><div id=sidebar-container class="sidebar-container sidebar-offcanvas"><nav id=sidebar aria-label="Section Navigation"><div class=directory><div class=card><div id=header0 class=header title="Frequently Asked Questions about Istio."><svg class="icon faq"><use xlink:href="/v1.8/img/icons.svg#faq"/></svg>FAQ</div><div class="body default" aria-labelledby=header0><ul role=tree aria-expanded=true class=leaf-section aria-labelledby=header0><li role=none><a role=treeitem title="General Q & A." href=/v1.8/faq/general/>General</a></li><li role=none><a role=treeitem title="Setup Q & A." href=/v1.8/faq/setup/>Setup</a></li><li role=none><a role=treeitem title="Application Specific Q & A." href=/v1.8/faq/applications/>Applications</a></li><li role=none><a role=treeitem title="Security Q & A." href=/v1.8/faq/security/>Security</a></li><li role=none><span role=treeitem class=current title="Metrics and Logs Q & A.">Metrics and Logs</span></li><li role=none><a role=treeitem title="Distributed Tracing Q & A." href=/v1.8/faq/distributed-tracing/>Distributed Tracing</a></li><li role=none><a role=treeitem title="Traffic Management Q & A." href=/v1.8/faq/traffic-management/>Traffic Management</a></li></ul></div></div></div></nav></div><div class=article-container><nav aria-label=Breadcrumb><ol><li><a href=/v1.8/ title="Connect, secure, control, and observe services.">Istio</a></li><li><a href=/v1.8/faq/ title="Frequently Asked Questions about Istio.">FAQ</a></li><li>Metrics and Logs</li></ol></nav><article aria-labelledby=title><div class=title-area><i class=title-icon><svg class="icon faq"><use xlink:href="/v1.8/img/icons.svg#faq"/></svg></i><div style=width:100%><h1 id=title>Metrics and Logs FAQ</h1></div></div><nav class="toc-inlined toc-forced"><hr><div class=directory role=directory><nav id=InlineTableOfContents><ol><li role=none aria-label="Can Istio metrics be accessed through REST?"><a href=#accessing-telemetry-via-rest>Can Istio metrics be accessed through REST?</a></li><li role=none aria-label="What are the differences in telemetry reported by in-proxy telemetry (aka v2) and Mixer-based telemetry (aka v1)?"><a href=#telemetry-v1-vs-v2>What are the differences in telemetry reported by in-proxy telemetry (aka v2) and Mixer-based telemetry (aka v1)?</a></li><li role=none aria-label="Can the Prometheus adapter be used in non-Kubernetes environments?"><a href=#prometheus-for-non-k8s>Can the Prometheus adapter be used in non-Kubernetes environments?</a></li><li role=none aria-label="How to figure out what happened to a request in Istio?"><a href=#life-of-a-request>How to figure out what happened to a request in Istio?</a></li><li role=none aria-label="Can I use Prometheus to scrape application metrics with Istio?"><a href=#prometheus-application-metrics>Can I use Prometheus to scrape application metrics with Istio?</a></li></ol></nav></div><hr></nav><div class=faq><h5 id=accessing-telemetry-via-rest class=question>Can Istio metrics be accessed through REST?</h5><div class=answer><p>You can collect telemetry data about Istio using <a href=/v1.8/docs/tasks/observability/metrics/querying-metrics/>Prometheus</a>. And then use
<a href=https://prometheus.io/docs/prometheus/latest/querying/api/>Prometheuss HTTP API</a> to query that data.</p></div><h5 id=telemetry-v1-vs-v2 class=question>What are the differences in telemetry reported by in-proxy telemetry (aka v2) and Mixer-based telemetry (aka v1)?</h5><div class=answer><p>In-proxy telemetry (aka v2) reduces resource cost and improves proxy
performance as compared to the Mixer-based telemetry (aka v1) approach,
and is the preferred mechanism for surfacing telemetry in Istio.
However, there are few differences in reported telemetry between v1 and
v2 which are listed below:</p><ul><li><p><strong>Missing labels for out-of-mesh traffic</strong>
In-proxy telemetry relies on metadata exchange between Envoy proxies to gather
information like peer workload name, namespace and labels. In Mixer-based telemetry
this functionality was performed by Mixer as part of combining request attributes
with the platform data. This metadata exchange is performed by the Envoy proxies
by adding a specific HTTP header for HTTP protocol or augmenting
ALPN protocol for TCP protocol as described
<a href=/v1.8/docs/tasks/observability/metrics/tcp-metrics/#understanding-tcp-telemetry-collection>here</a>.
This requires Envoy proxies to be injected at both the client & server workloads,
implying that the telemetry reported when one peer is not in the mesh will be
missing peer attributes like workload name, namespace and labels.
However, if both peers have proxies injected all the labels mentioned
<a href=/v1.8/docs/reference/config/metrics/>here</a> are available in the generated metrics.</p></li><li><p><strong>TCP metadata exchange requires mTLS</strong>
TCP metadata exchange relies on the <a href=/v1.8/docs/tasks/observability/metrics/tcp-metrics/#understanding-tcp-telemetry-collection>Istio ALPN protocol</a>
which requires mutual TLS (mTLS) to be enabled for the Envoy proxies
to exchange metadata successfully. This implies that if mTLS is not
enabled in your cluster, telemetry for TCP protocol will not include
peer information like workload name, namespace and labels.</p></li><li><p><strong>No mechanism for configuring custom buckets for histogram metrics</strong>
Mixer-based telemetry supported customizing buckets for histogram type metrics
like request duration and TCP byte sizes. In-proxy telemetry has no such
available mechanism. Additionally, the buckets available for latency metrics
in in-proxy telemetry are in milliseconds as compared to seconds
in Mixer-based telemetry. However, more buckets are available by default
in in-proxy telemetry for latency metrics at the lower latency levels.</p></li><li><p><strong>No metric expiration for short-lived metrics</strong>
Mixer-based telemetry supported metric expiration whereby metrics which were
not generated for a configurable amount of time were de-registered for
collection by Prometheus. This is useful in scenarios where short-lived jobs
surface telemetry only for a short amount of time, and de-registering
the metrics prevents reporting of metrics which would no longer change in the
future, thereby reducing network traffic and storage in Prometheus.
This expiration mechanism is not available in in-proxy telemetry.</p></li></ul></div><h5 id=prometheus-for-non-k8s class=question>Can the Prometheus adapter be used in non-Kubernetes environments?</h5><div class=answer><p>You can use docker-compose to install Prometheus.</p></div><h5 id=life-of-a-request class=question>How to figure out what happened to a request in Istio?</h5><div class=answer><p>You can enable <a href=/v1.8/docs/tasks/observability/distributed-tracing/>tracing</a> to determine the flow of a request in Istio.</p><p>Additionally, you can use the following commands to know more about the state of the mesh:</p><ul><li><p><a href=/v1.8/docs/reference/commands/istioctl/#istioctl-proxy-config><code>istioctl proxy-config</code></a>: Retrieve information about proxy configuration when running in Kubernetes:</p><pre><code class=language-plain data-expandlinks=true data-repo=istio># Retrieve information about bootstrap configuration for the Envoy instance in the specified pod.
$ istioctl proxy-config bootstrap productpage-v1-bb8d5cbc7-k7qbm
# Retrieve information about cluster configuration for the Envoy instance in the specified pod.
$ istioctl proxy-config cluster productpage-v1-bb8d5cbc7-k7qbm
# Retrieve information about listener configuration for the Envoy instance in the specified pod.
$ istioctl proxy-config listener productpage-v1-bb8d5cbc7-k7qbm
# Retrieve information about route configuration for the Envoy instance in the specified pod.
$ istioctl proxy-config route productpage-v1-bb8d5cbc7-k7qbm
# Retrieve information about endpoint configuration for the Envoy instance in the specified pod.
$ istioctl proxy-config endpoints productpage-v1-bb8d5cbc7-k7qbm
# Try the following to discover more proxy-config commands
$ istioctl proxy-config --help
</code></pre></li><li><p><code>kubectl get</code>: Gets information about different resources in the mesh along with routing configuration:</p><pre><code class=language-plain data-expandlinks=true data-repo=istio># List all virtual services
$ kubectl get virtualservices
</code></pre></li></ul></div><h5 id=prometheus-application-metrics class=question>Can I use Prometheus to scrape application metrics with Istio?</h5><div class=answer><p>Yes. Istio ships with <a href=https://raw.githubusercontent.com/istio/istio/release-1.8/manifests/charts/istio-telemetry/prometheus/templates/configmap.yaml>configuration for Prometheus</a>
that enables collection of application metrics when mutual TLS is enabled or disabled.</p><p>The <code>kubernetes-pods</code> job collects application metrics from pods in environments without mutual TLS. The <code>kubernetes-pods-istio-secure</code> job collects metrics
from application pods when mutual TLS is enabled for Istio.</p><p>Both jobs require that the following annotations are added to any deployments from which application metric collection is desired:</p><ul><li><code>prometheus.io/scrape: "true"</code></li><li><code>prometheus.io/path: "&lt;metrics path>"</code></li><li><code>prometheus.io/port: "&lt;metrics port>"</code></li></ul><p>A few notes:</p><ul><li>If the Prometheus pod started before the Istio Citadel pod could generate the required certificates and distribute them to Prometheus, the Prometheus pod will need to
be restarted in order to collect from mutual TLS-protected targets.</li><li>If your application exposes Prometheus metrics on a dedicated port, that port should be added to the service and deployment specifications.</li></ul></div></div></article><nav class=pagenav><div class=left><a title="Security Q & A." href=/v1.8/faq/security/><svg class="icon left-arrow"><use xlink:href="/v1.8/img/icons.svg#left-arrow"/></svg>Security</a></div><div class=right><a title="Distributed Tracing Q & A." href=/v1.8/faq/distributed-tracing/>Distributed Tracing<svg class="icon right-arrow"><use xlink:href="/v1.8/img/icons.svg#right-arrow"/></svg></a></div></nav><div id=endnotes-container aria-hidden=true><h2>Links</h2><ol id=endnotes></ol></div></div></main><footer><div class=user-links><a class=channel title="Go download Istio 1.8.3 now" href=/v1.8/docs/setup/getting-started/#download aria-label="Download Istio"><span>download</span><svg class="icon download"><use xlink:href="/v1.8/img/icons.svg#download"/></svg>
</a><a class=channel title="Join the Istio discussion board to participate in discussions and get help troubleshooting problems" href=https://discuss.istio.io aria-label="Istio discussion board"><span>discuss</span><svg class="icon discourse"><use xlink:href="/v1.8/img/icons.svg#discourse"/></svg></a>
<a class=channel title="Stack Overflow is where you can ask questions and find curated answers on deploying, configuring, and using Istio" href=https://stackoverflow.com/questions/tagged/istio aria-label="Stack Overflow"><span>stack overflow</span><svg class="icon stackoverflow"><use xlink:href="/v1.8/img/icons.svg#stackoverflow"/></svg></a>
<a class=channel title="Interactively discuss issues with the Istio community on Slack" href=https://slack.istio.io aria-label=slack><span>slack</span><svg class="icon slack"><use xlink:href="/v1.8/img/icons.svg#slack"/></svg></a>
<a class=channel title="Follow us on Twitter to get the latest news" href=https://twitter.com/IstioMesh aria-label=Twitter><span>twitter</span><svg class="icon twitter"><use xlink:href="/v1.8/img/icons.svg#twitter"/></svg></a><div class=tag>for everyone</div></div><div class=info><p class=copyright>Istio Archive
1.8.3<br>&copy; 2020 Istio Authors, <a href=https://policies.google.com/privacy>Privacy Policy</a><br>Archived on February 9, 2021</p></div><div class=dev-links><a class=channel title="GitHub is where development takes place on Istio code" href=https://github.com/istio/community aria-label=GitHub><span>github</span><svg class="icon github"><use xlink:href="/v1.8/img/icons.svg#github"/></svg></a>
<a class=channel title="Access our team drive if you'd like to take a look at the Istio technical design documents" href=https://groups.google.com/forum/#!forum/istio-team-drive-access aria-label="team drive"><span>drive</span><svg class="icon drive"><use xlink:href="/v1.8/img/icons.svg#drive"/></svg></a>
<a class=channel title="If you'd like to contribute to the Istio project, consider participating in our working groups" href=https://github.com/istio/community/blob/master/WORKING-GROUPS.md aria-label="working groups"><span>working groups</span><svg class="icon working-groups"><use xlink:href="/v1.8/img/icons.svg#working-groups"/></svg></a><div class=tag>for developers</div></div></footer><div id=scroll-to-top-container aria-hidden=true><button id=scroll-to-top title="Back to top"><svg class="icon top"><use xlink:href="/v1.8/img/icons.svg#top"/></svg></button></div></body></html>