PageSourceSearch

https://telepresence.io/assets/js/46e1d3dd.1f7eb7a6.js

js telepresence.io collected 2026-10-03 20:29:31 UTC 18,447 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunktelepresence=globalThis.webpackChunktelepresence||[]).push([[26624],{94200(e,n,t){t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"howtos/monitoring","title":"Monitoring","description":"Telepresence offers powerful monitoring capabilities to help you keep a close eye on your telepresence activities and traffic manager metrics.","source":"@site/versioned_docs/version-2.30/howtos/monitoring.md","sourceDirName":"howtos","slug":"/howtos/monitoring","permalink":"/docs/2.30/howtos/monitoring","draft":false,"unlisted":false,"editUrl":"https://github.com/telepresenceio/telepresence/tree/release/v2/docs/howtos/monitoring.md","tags":[],"version":"2.30","frontMatter":{"title":"Monitoring"},"sidebar":"defaultSidebar","previous":{"title":"Run the Telepresence client in a container","permalink":"/docs/2.30/howtos/inside-container"},"next":{"title":"telepresence","permalink":"/docs/2.30/reference/cli/telepresence"}}');var s=t(74848),o=t(28453);const i={title:"Monitoring"},a="Monitoring",l={},c=[{value:"Prometheus Integration",id:"prometheus-integration",level:2},{value:"Grafana Integration",id:"grafana-integration",level:2}];function d(e){const n={code:"code",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"monitoring",children:"Monitoring"})}),"\n",(0,s.jsx)(n.p,{children:"Telepresence offers powerful monitoring capabilities to help you keep a close eye on your telepresence activities and traffic manager metrics."}),"\n",(0,s.jsx)(n.h2,{id:"prometheus-integration",children:"Prometheus Integration"}),"\n",(0,s.jsx)(n.p,{children:"One of the key features of Telepresence is its seamless integration with Prometheus, which allows you to access real-time metrics and gain insights into your system's performance. With Prometheus, you can monitor various aspects of your traffic manager, including the number of active intercepts and users. Additionally, you can track consumption-related information, such as the number of intercepts used by your developers and how long they stayed connected."}),"\n",(0,s.jsx)(n.p,{children:"To enable Prometheus metrics for your traffic manager, follow these steps:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Configure Prometheus Port"})}),"\n",(0,s.jsxs)(n.p,{children:["First, you'll need to specify the Prometheus port by setting a new environment variable called ",(0,s.jsx)(n.code,{children:"PROMETHEUS_PORT"})," for your traffic manager. You can do this by running the following command:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"telepresence helm upgrade --set-string prometheus.port=9090\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Validate the Prometheus Exposure"})}),"\n",(0,s.jsx)(n.p,{children:"After configuring the Prometheus port, you can validate its exposure by port-forwarding the port using Kubernetes:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-shell",children:"kubectl port-forward deploy/traffic-manager 9090:9090 -n ambassador\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Access Prometheus Dashboard"})}),"\n",(0,s.jsxs)(n.p,{children:["Once the port-forwarding is set up, you can access the Prometheus dashboard by n
1avigating to ",(0,s.jsx)(n.code,{children:"http://localhost:9090"})," in your web browser:"]}),"\n",(0,s.jsx)(n.p,{children:"Here, you will find a wealth of built-in metrics, as well as custom metrics (see below) that we have added to enhance your tracking capabilities."}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:(0,s.jsx)(n.strong,{children:"Name"})}),(0,s.jsx)(n.th,{children:(0,s.jsx)(n.strong,{children:"Type"})}),(0,s.jsx)(n.th,{children:(0,s.jsx)(n.strong,{children:"Description"})}),(0,s.jsx)(n.th,{children:(0,s.jsx)(n.strong,{children:"Labels"})})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_agent_count"})}),(0,s.jsx)(n.td,{children:"Gauge"}),(0,s.jsx)(n.td,{children:"Number of connected traffic agents."}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_client_count"})}),(0,s.jsx)(n.td,{children:"Gauge"}),(0,s.jsx)(n.td,{children:"Number of connected clients."}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_active_intercept_count"})}),(0,s.jsx)(n.td,{children:"Gauge"}),(0,s.jsx)(n.td,{children:"Number of active intercepts."}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_session_count"})}),(0,s.jsx)(n.td,{children:"Gauge"}),(0,s.jsx)(n.td,{children:"Number of sessions."}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_tunnel_count"})}),(0,s.jsx)(n.td,{children:"Gauge"}),(0,s.jsx)(n.td,{children:"Number of tunnels."}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_tunnel_ingress_bytes"})}),(0,s.jsx)(n.td,{children:"Counter"}),(0,s.jsx)(n.td,{children:"Number of bytes tunnelled from clients."}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_tunnel_egress_bytes"})}),(0,s.jsx)(n.td,{children:"Counter"}),(0,s.jsx)(n.td,{children:"Number of bytes tunnelled to clients."}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_active_http_request_count"})}),(0,s.jsx)(n.td,{children:"Gauge"}),(0,s.jsx)(n.td,{children:"Number of currently served HTTP requests."}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_active_grpc_request_count"})}),(0,s.jsx)(n.td,{children:"Gauge"}),(0,s.jsx)(n.td,{children:"Number of currently served gRPC requests."}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_connect_count"})}),(0,s.jsx)(n.td,{children:"Counter"}),(0,s.jsx)(n.td,{children:"The total number of connects by user."}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.code,{children:"client"}),", ",(0,s.jsx)(n.code,{children:"install_id"})]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_connect_active_status"})}),(0,s.jsx)(n.td,{children:"Gauge"}),(0,s.jsx)(n.td,{children:"Flag to indicate when a connect is active. 1 for active, 0 for not active."}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.code,{children:"client"}),", ",(0,s.jsx)(n.code,{children:"install_id"})]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_intercept_count"})}),(0,s.jsx)(n.td,{children:"Counter"}),(0,s.jsx)(n.td,{children:"The total number of intercepts by user."}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.code,{children:"client"}),", ",(0,s.jsx)(n.code,{children:"install_id"}),", ",(0,s.jsx)(n.code,{children:"intercept_type"})]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"telepresence_intercept_active_status"})}),(0,s.jsx)(n.td,{children:"Gauge"}),(0,s.jsx)(n.td,{children:"Flag to indicate when an intercept is active. 1 for active, 0 for not active."}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)(n.code,{children:"client"}),", ",(0,s.jsx)(n.code,{children:"install_id"}),", ",(0,s.jsx)(n.code,{children:"workload"})]})]})]})]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Enable Scraping for Traffic Manager Metrics"}),"\nTo ensure that these metrics are collected regularly by your Prometheus server and to maintain a historical record, it's essential to enable scraping. If you're using the default Prometheus configuration, you can achieve this by specifying specific pod annotations as follows:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-yaml",children:'template:\n  metadata:\n    annotations:\n      prometheus.io/path: /\n      prometheus.io/port: "9090"\n      prometheus.io/scrape: "true"\n'})}),"\n",(0,s.jsx)(n.p,{children:"These annotations instruct Prometheus to scrape metrics from the Traffic Manager pod, allowing you to track consumption metrics and other important data over time."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"grafana-integration",children:"Grafana Integration"}),"\n",(0,s.jsx)(n.p,{children:"Grafana plays a crucial role in enhancing Telepresence's monitoring capabilities. While the step-by-step instructions for Grafana integration are not included in this documentation, you have the option to explore the integration process. By doing so, you can create visually appealing and interactive dashboards that provide deeper insights into your telepresence activities and traffic manager metrics."}),"\n",(0,s.jsx)(n.p,{children:"Moreover, we've developed a dedicated Grafana dashboard for your convenience. Below, you can find sample screenshots of the dashboard, and 
1you can access the JSON model for configuration:"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"JSON Model:"})}),"\n",(0,s.jsx)(n.p,{children:"This dashboard is designed to provide you with comprehensive monitoring and visualization tools to effectively manage your Telepresence environment."}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-json",children:'{\n  "__inputs": [\n    {\n      "name": "DS_PROMETHEUS",\n      "label": "Prometheus",\n      "description": "",\n      "type": "datasource",\n      "pluginId": "prometheus",\n      "pluginName": "Prometheus"\n    }\n  ],\n  "__elements": {},\n  "__requires": [\n    {\n      "type": "panel",\n      "id": "barchart",\n      "name": "Bar chart",\n      "version": ""\n    },\n    {\n      "type": "grafana",\n      "id": "grafana",\n      "name": "Grafana",\n      "version": "10.1.5"\n    },\n    {\n      "type": "panel",\n      "id": "piechart",\n      "name": "Pie chart",\n      "version": ""\n    },\n    {\n      "type": "datasource",\n      "id": "prometheus",\n      "name": "Prometheus",\n      "version": "1.0.0"\n    },\n    {\n      "type": "panel",\n      "id": "stat",\n      "name": "Stat",\n      "version": ""\n    }\n  ],\n  "annotations": {\n    "list": [\n      {\n        "builtIn": 1,\n        "datasource": {\n          "type": "grafana",\n          "uid": "-- Grafana --"\n        },\n        "enable": true,\n        "hide": true,\n        "iconColor": "rgba(0, 211, 255, 1)",\n        "name": "Annotations & Alerts",\n        "type": "dashboard"\n      }\n    ]\n  },\n  "editable": true,\n  "fiscalYearStartMonth": 0,\n  "graphTooltip": 0,\n  "id": null,\n  "links": [],\n  "liveNow": false,\n  "panels": [\n    {\n      "datasource": {\n        "type": "prometheus",\n        "uid": "${DS_PROMETHEUS}"\n      },\n      "fieldConfig": {\n        "defaults": {\n          "color": {\n            "mode": "thresholds"\n          },\n          "mappings": [],\n          "thresholds": {\n            "mode": "absolute",\n            "steps": [\n              {\n                "color": "green",\n                "value": null\n              },\n              {\n                "color": "red",\n                "value": 80\n              }\n            ]\n          }\n        },\n        "overrides": []\n      },\n      "gridPos": {\n        "h": 7,\n        "w": 6,\n        "x": 0,\n        "y": 0\n      },\n      "id": 5,\n      "options": {\n        "colorMode": "value",\n        "graphMode": "area",\n        "justifyMode": "auto",\n        "orientation": "auto",\n        "reduceOptions": {\n          "calcs": [\n            "lastNotNull"\n          ],\n          "fields": "",\n          "values": false\n        },\n        "textMode": "auto"\n      },\n      "pluginVersion": "10.1.5",\n      "targets": [\n        {\n          "datasource": {\n            "type": "prometheus",\n            "uid": "${DS_PROMETHEUS}"\n          },\n          "editorMode": "code",\n          "exemplar": false,\n          "expr": "telepresence_agent_count",\n          "instant": true,\n          "legendFormat": "__auto",\n          "range": false,\n          "refId": "A"\n        }\n      ],\n      "title": "Number of connected traffic agents",\n      "type": "stat"\n    },\n    {\n      "datasource": {\n        "type": "prometheus",\n        "uid": "${DS_PROMETHEUS}"\n      },\n      "fieldConfig": {\n        "defaults": {\n          "color": {\n            "mode": "thresholds"\n          },\n          "mappings": [],\n          "thresholds": {\n            "mode": "absolute",\n            "steps": [\n              {\n                "color": "green",\n                "value": null\n              },\n              {\n                "color": "red",\n                "value": 80\n              }\n            ]\n          }\n        },\n        "overrides": []\n      },\n      "gridPos": {\n        "h": 7,\n        "w": 6,\n        "x": 6,\n        "y": 0\n      },\n      "id": 6,\n      "options": {\n        "colorMode": "value",\n        "graphMode": "area",\n        "justifyMode": "auto",\n        "orientation": "auto",\n        "reduceOptions": {\n          "calcs": [\n            "lastNotNull"\n          ],\n          "fields": "",\n          "values": false\n        },\n        "textMode": "auto"\n      },\n      "pluginVersion": "10.1.5",\n      "targets": [\n        {\n          "datasource": {\n            "type": "prometheus",\n            "uid": "${DS_PROMETHEUS}"\n          },\n          "editorMode": "code",\n          "exemplar": false,\n          "expr": "telepresence_client_count",\n          "instant": true,\n          "legendFormat": "__auto",\n          "range": false,\n          "refId": "A"\n        }\n      ],\n      "title": "Number of connected clients",\n      "type": "stat"\n    },\n    {\n      "datasource": {\n        "type": "prometheus",\n        "uid": "${DS_PROMETHEUS}"\n      },\n      "fieldConfig": {\n        "defaults": {\n          "color": {\n            "mode": "thresholds"\n          },\n          "mappings": [],\n          "thresholds": {\n            "mode": "absolute",\n            "steps": [\n              {\n                "color": "green",\n                "value": null\n              },\n              {\n                "color": "red",\n                "value": 80\n              }\n            ]\n          }\n        },\n        "overrides": []\n      },\n      "gridPos": {\n        "h": 7,\n        "w": 6,\n        "x": 12,\n        "y": 0\n      },\n      "id": 7,\n      "options": {\n        "colorMode": "value",\n        "graphMode": "area",\n        "justifyMode": "auto",\n        "orientation": "auto",\n        "reduceOptions": {\n          "calcs": [\n            "lastNotNull"\n          ],\n          "fields": "",\n          "values": false\n        },\n        "textMode": "auto"\n      },\n      "pluginVersion": "10.1.5",\n      "targets": [\n        {\n          "datasource": {\n            "type": "prometheus",\n            "uid": "${DS_PROMETHEUS}"\n          },\n          "editorMode": "code",\n          "exemplar": false,\n          "expr": "telepresence_active_intercept_count",\n          "instant": true,\n          "legendFormat": "__auto",\n          "range": false,\n          "refId": "A"\n        }\n      ],\n      "title": "Number of active intercepts",\n      "type": "stat"\n    },\n    {\n      "datasource": {\n        "type": "prometheus",\n        "uid": "${DS_PROMETHEUS}"\n      },\n      "fieldConfig": {\n        "defaults": {\n          "color": {\n            "mode": "thresholds"\n          },\n          "mappings": [],\n          "thresholds": {\n            "mode": "absolute",\n            "steps": [\n              {\n                "color": "green",\n                "value": null\n              },\n              {\n                "color": "red",\n                "value": 80\n              }\n            ]\n          }\n        },\n        "overrides": []\n      },\n      "gridPos": {\n        "h": 7,\n        "w": 6,\n        "x": 18,\n        "y": 0\n      },\n      "id": 8,\n      "options": {\n        "colorMode": "value",\n        "graphMode": "area",\n        "justifyMode": "auto",\n        "orientation": "auto",\n        "reduceOptions": {\n          "calcs": [\n            "lastNotNull"\n          ],\n          "fields": "",\n          "values": false\n        },\n        "textMode": "auto"\n      },\n      "pluginVersion": "10.1.5",\n      "targets": [\n        {\n          "datasource": {\n            "type": "prometheus",\n            "uid": "${DS_PROMETHEUS}"\n          },\n          "editorMode": "code",\n          "exemplar": false,\n          "expr": "telepresence_session_count",\n          "instant": true,\n          "legendFormat": "__auto",\n          "range": false,\n          "refId": "A"\n        }\n      ],\n      "title": "Number of sessions",\n      "type": "stat"\n    }\n  ],\n  "refresh": "",\n  "schemaVersion": 38,\n  "style": "dar
1k",\n  "tags": [],\n  "templating": {\n    "list": []\n  },\n  "time": {\n    "from": "now-30d",\n    "to": "now"\n  },\n  "timepicker": {},\n  "timezone": "",\n  "title": "Telepresence",\n  "uid": "d99c884a-8f4f-43f8-bd4e-bd68e47f100d",\n  "version": 5,\n  "weekStart": ""\n}\n'})})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},28453(e,n,t){t.d(n,{R:()=>i,x:()=>a});var r=t(96540);const s={},o=r.createContext(s);function i(e){const n=r.useContext(o);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.