Flipt exposes Prometheus metrics by default at the /metrics
HTTP endpoint. To see which metrics are currently supported, point your browser
to FLIPT_HOST/metrics (ex: localhost:8080/metrics).You should see a bunch of metrics being recorded such as:
Flipt supports sending metrics to an OTLP collector.OTLP supports additional configuration such as specifying the protocol to use (gRPC or HTTP) as well as providing custom headers to send with the request.Custom headers can be used to provide authentication information to the collector which may be required if you are using a hosted collector such as NewRelic, DataDog, or Honeycomb.These can be configured via the metrics.otlp configuration section.
We provide a set of Grafana dashboards that you can use to visualize the metrics collected by Flipt, including both server health and flag evaluation metrics.You can find the dashboards in our grafana-dashboards repository.
The format can be configured via the log.encoding configuration option.
log: encoding: json
For production deployments, we recommend using the JSON format as itโs easier to parse and ingest into log aggregation systems such as Elasticsearch, Splunk, Loki, or Datadog.Weโve prepared an example showing how to set up Flipt with Grafana Loki and Promtail to ingest and query logs.
L: Level (log level). Possible values include: debug, info, warn, error, fatal, and panic.
T: Timestamp. The timestamp is in ISO 8601 format, widely used for representing date and time. It includes the date, time, and time zone information. For example, โ2024-01-20T21:59:49-05:00โ represents the date and time in the Eastern Time Zone (UTC-5).
M: Message. The message describes the log event. It can include information about the operation, errors encountered, or other relevant details.
Enable tracing via the values described in the Tracing configuration and point Flipt to your configured collector to record spans.Examples showing how to set up Flipt with each of the supported tracing backends can be found in the main GitHub repository .
OTLP supports additional configuration such as specifying the protocol to use (gRPC or HTTP) as well as providing custom headers to send with the request.Custom headers can be used to provide authentication information to the collector which may be required if you are using a hosted collector such as NewRelic, Datadog, or Honeycomb.These can be configured via the tracing.otlp configuration section.
Flipt supports OTLP specific resource environment variables that are part of the OTLP spec.The following environment variables are supported:
OTEL_SERVICE_NAME - Sets the value of the service.name resource attribute (default: flipt)
OTEL_RESOURCE_ATTRIBUTES - Key-value pairs to be used as resource attributes.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Flipt","colors":{"primary":"#7C3AED","light":"#BA97F5","dark":"#4F3292"},"logo":{"light":"https://mintcdn.com/flipt/DEE1Qcfhk5tfKCOi/logo/light-logo.svg?fit=max\u0026auto=format\u0026n=DEE1Qcfhk5tfKCOi\u0026q=85\u0026s=a6aa20ecf9af822ec8f6786b13555d76","dark":"https://mintcdn.com/flipt/DEE1Qcfhk5tfKCOi/logo/dark-logo.svg?fit=max\u0026auto=format\u0026n=DEE1Qcfhk5tfKCOi\u0026q=85\u0026s=74c8d34f5f0e2577e2bfd72dbd3ea254"},"favicon":"https://mintcdn.com/flipt/DEE1Qcfhk5tfKCOi/favicon.svg?fit=max\u0026auto=format\u0026n=DEE1Qcfhk5tfKCOi\u0026q=85\u0026s=7aaeb0cac086fb85002ba070f5ddbc32","api":{"openapi":["https://raw.githubusercontent.com/flipt-io/flipt/main/openapi.yaml","https://raw.githubusercontent.com/flipt-io/flipt/refs/heads/v2/rpc/flipt/openapi.yaml","https://raw.githubusercontent.com/flipt-io/flipt/refs/heads/v2/rpc/v2/environments/openapi.yaml","https://raw.githubusercontent.com/flipt-io/flipt/refs/heads/v2/rpc/v2/evaluation/openapi.yaml"],"playground":{"display":"simple"},"mdx":{"auth":{"method":"bearer"},"server":"http://localhost:8080"}},"background":{"image":"https://mintcdn.com/flipt/VG7J2soXPDNctRM3/background.png?fit=max\u0026auto=format\u0026n=VG7J2soXPDNctRM3\u0026q=85\u0026s=5009659e8144412bf683a7e68d47c78c","color":{"dark":"#121212"}},"navbar":{},"footer":{"socials":{"website":"https://www.flipt.io/","twitter":"https://twitter.com/flipt_io","discord":"https://www.flipt.io/discord","github":"https://git.new/flipt"}},"seo":{"metatags":{"og:type":"website","og:site_name":"Flipt Docs"},"indexing":"all"},"integrations":{"ga4":{"measurementId":"G-Q8MF5LZSNS"}},"banner":{"content":"๐ **New:** MCP server for Flipt v2. Let AI assistants manage and evaluate your feature flags. [Learn more](https://docs.flipt.io/v2/tooling/model-context-protocol).","dismissible":true},"contextual":{"options":["copy","view","mcp"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"flipt","hasAudioNarration":false,"actualSubdomain":"flipt","customDomains":["docs.flipt.io"],"gitSource":{"type":"github","owner":"flipt-io","repo":"docs","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad75505fe4769c03a8abf10","collectionId":"a1277b49-034c-4184-8f4e-3c299845f295","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad75505fe4769c03a8abf10"},"feedback":{"thumbs":true,"edits":true},"entitlements":{},"buildId":"6aedaafc7d3fe39d4f38346c","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"v1","count":112},{"language":"default","tag":"Documentation","count":109},{"language":"default","tag":"API Reference","count":83},{"language":"default","tag":"v2","count":81},{"language":"default","tag":"Guides","count":25},{"language":"default","tag":"Configuration","count":23},{"language":"default","tag":"CLI","count":22},{"language":"default","tag":"Authentication","count":20},{"language":"default","tag":"Commands","count":20},{"language":"default","tag":"Operations Guides","count":17}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"v1/configuration/observability","slug":"/v1/configuration/observability","pageMetadata":{"title":"Observability","description":"This document describes how to configure Flipt's observability mechanisms including metrics, logging, and tracing.","href":"/v1/configuration/observability"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"This document describes how to configure Fliptโs observability mechanisms including metrics, logging, and tracing.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`metrics`,children:`Metrics`}),`\n`,_jsx(Heading,{level:`3`,id:`prometheus`,children:`Prometheus`}),`\n`,_jsxs(_components.p,{children:[`Flipt exposes `,_jsx(_components.a,{href:`https://prometheus.io/`,children:`Prometheus`}),` metrics by default at the `,_jsx(_components.code,{children:`/metrics`}),`\nHTTP endpoint. To see which metrics are currently supported, point your browser\nto `,_jsx(_components.code,{children:`FLIPT_HOST/metrics`}),` (ex: `,_jsx(_components.code,{children:`localhost:8080/metrics`}),`).`]}),`\n`,_jsx(_components.p,{children:`You should see a bunch of metrics being recorded such as:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`flipt_cache_hit_total{cache=\"memory\",type=\"flag\"} 1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`flipt_cache_miss_total{cache=\"memory\",type=\"flag\"} 1`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`---`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`go_gc_duration_seconds{quantile=\"0\"} 8.641e-06`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`go_gc_duration_seconds{quantile=\"0.25\"} 2.499e-05`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`go_gc_duration_seconds{quantile=\"0.5\"} 3.5359e-05`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`go_gc_duration_seconds{quantile=\"0.75\"} 6.6594e-05`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`go_gc_duration_seconds{quantile=\"1\"} 0.00026651 go_gc_duration_seconds_sum`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`0.000402094 go_gc_duration_seconds_count 5`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`An `,_jsx(_components.a,{href:`https://github.com/flipt-io/flipt/tree/main/examples/metrics`,children:`example`}),`\nshowing how to set up Flipt with Prometheus can be found in the GitHub repository.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`You can disable the Prometheus metrics collection by setting the\n`,_jsx(_components.code,{children:`metrics.enabled`}),` configuration option to `,_jsx(_components.code,{children:`false`}),`.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`otlp`,children:`OTLP`}),`\n`,_jsxs(_components.p,{children:[`Flipt supports sending metrics to an `,_jsx(_components.a,{href:`https://opentelemetry.io/docs/concepts/data-collection/`,children:`OTLP`}),` collector.`]}),`\n`,_jsx(_components.p,{children:`OTLP supports additional configuration such as specifying the protocol to use (gRPC or HTTP) as well as providing custom headers to send with the request.`}),`\n`,_jsxs(_components.p,{children:[`Custom headers can be used to provide authentication information to the collector which may be required if you are using a hosted collector such as `,_jsx(_components.a,{href:`https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-set-up-your-app/`,children:`NewRelic`}),`, `,_jsx(_components.a,{href:`https://docs.datadoghq.com/opentelemetry/otlp_ingest_in_the_agent/?tab=host`,children:`DataDog`}),`, or `,_jsx(_components.a,{href:`https://docs.honeycomb.io/getting-data-in/opentelemetry-overview/#instrumenting-with-opentelemetry`,children:`Honeycomb`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`These can be configured via the `,_jsx(_components.code,{children:`metrics.otlp`}),` configuration section.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`metrics`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` exporter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"otlp\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` otlp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` endpoint`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://{your-collector-url}\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` headers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-Some-Header\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"some-value\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`dashboards`,children:`Dashboards`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/grafana_flag_dashboard.png?fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=31d9ac83cd9f48ca5e13d924bf1593b0`,alt:`Grafana Dashboard`,\"data-og-width\":`3354`,width:`3354`,\"data-og-height\":`1926`,height:`1926`,\"data-path\":`v1/images/configuration/grafana_flag_dashboard.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/grafana_flag_dashboard.png?w=280\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=14d49f4967e2e06e3d66985fa68ba5ed 280w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/grafana_flag_dashboard.png?w=560\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=19373f1d7d3af31c597204910a23d372 560w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/grafana_flag_dashboard.png?w=840\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=a3deff61283bda13502122ef29b54de4 840w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/grafana_flag_dashboard.png?w=1100\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=65617568e84c6196ff894d472fee0e5a 1100w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/grafana_flag_dashboard.png?w=1650\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=47c7bc73ddc820f20bef31da6a79cf2a 1650w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/grafana_flag_dashboard.png?w=2500\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=3e7d5c81e318e6e2d8b4245cddead95b 2500w`}),`\n`,_jsxs(_components.p,{children:[`We provide a set of `,_jsx(_components.a,{href:`https://grafana.com/`,children:`Grafana`}),` dashboards that you can use to visualize the metrics collected by Flipt, including both server health and flag evaluation metrics.`]}),`\n`,_jsxs(_components.p,{children:[`You can find the dashboards in our `,_jsx(_components.a,{href:`https://github.com/flipt-io/grafana-dashboards`,children:`grafana-dashboards`}),` repository.`]}),`\n`,_jsx(Heading,{level:`2`,id:`logging`,children:`Logging`}),`\n`,_jsx(_components.p,{children:`Flipt writes logs to STDOUT in two formats:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#json`,children:`JSON`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`#console`,children:`Console`})}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The format can be configured via the `,_jsx(_components.code,{children:`log.encoding`}),` configuration option.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` encoding`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`json`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`For production deployments, we recommend using the JSON format as itโs easier to parse and ingest into log aggregation systems such as Elasticsearch, Splunk, Loki, or Datadog.`}),`\n`,_jsxs(_components.p,{children:[`Weโve prepared an `,_jsx(_components.a,{href:`https://github.com/flipt-io/flipt/tree/main/examples/audit/log`,children:`example`}),` showing how to set up Flipt with Grafana Loki and Promtail to ingest and query logs.`]}),`\n`,_jsx(Heading,{level:`3`,id:`json`,children:`JSON`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`14`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`14`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"L\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"INFO\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"T\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2024-01-20T21:59:49-05:00\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"M\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"finished unary call with code OK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"server\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"grpc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"grpc.start_time\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2024-01-20T21:59:49-05:00\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"system\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"grpc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"span.kind\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"server\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"grpc.service\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"flipt.evaluation.EvaluationService\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"grpc.method\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Boolean\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"peer.address\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"127.0.0.1:52635\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"grpc.code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"OK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"grpc.time_ms\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0.146`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`4`,id:`log-key-descriptions`,children:`Log Key Descriptions`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`L`}),`: Level (log level). Possible values include: debug, info, warn, error, fatal, and panic.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`T`}),`: Timestamp. The timestamp is in ISO 8601 format, widely used for representing date and time. It includes the date, time, and time zone information. For example, โ2024-01-20T21:59:49-05:00โ represents the date and time in the Eastern Time Zone (UTC-5).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`M`}),`: Message. The message describes the log event. It can include information about the operation, errors encountered, or other relevant details.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`console`,children:`Console`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`2024-01-20T22:04:18-05:00\tINFO\tfinished unary call with code OK\t{\"server\": \"grpc\", \"grpc.start_time\": \"2024-01-20T22:04:18-05:00\", \"system\": \"grpc\", \"span.kind\": \"server\", \"grpc.service\": \"flipt.evaluation.EvaluationService\", \"grpc.method\": \"Boolean\", \"peer.address\": \"127.0.0.1:53714\", \"grpc.code\": \"OK\", \"grpc.time_ms\": 0.373}`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`More information about the available configuration options can be found in the `,_jsx(_components.a,{href:`/v1/configuration/overview#logging`,children:`Logging configuration`}),` section.`]}),`\n`,_jsx(Heading,{level:`2`,id:`tracing`,children:`Tracing`}),`\n`,_jsxs(_components.p,{children:[`Flipt supports distributed tracing via the `,_jsx(_components.a,{href:`https://opentelemetry.io/`,children:`OpenTelemetry`}),` project.`]}),`\n`,_jsx(_components.p,{children:`Currently, we support the following tracing backends:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://www.jaegertracing.io/`,children:`Jaeger`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://zipkin.io/`,children:`Zipkin`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`https://opentelemetry.io/docs/reference/specification/protocol/`,children:`OTLP`})}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Enable tracing via the values described in the `,_jsx(_components.a,{href:`/v1/configuration/overview#tracing`,children:`Tracing configuration`}),` and point Flipt to your configured collector to record spans.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://github.com/flipt-io/flipt/tree/main/examples/tracing`,children:`Examples`}),` showing how to set up Flipt with each of the supported tracing backends can be found in the main GitHub repository .`]}),`\n`,_jsx(Heading,{level:`3`,id:`otlp-2`,children:`OTLP`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/datadog_otlp.png?fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=718929362d720ff4120c1b2a008c0408`,alt:`Datadog OTLP`,\"data-og-width\":`1691`,width:`1691`,\"data-og-height\":`746`,height:`746`,\"data-path\":`v1/images/configuration/datadog_otlp.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/datadog_otlp.png?w=280\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=d4e05c9d1ec9c0018c885043d7e94a70 280w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/datadog_otlp.png?w=560\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=b6225f61e3d6e92e50ecaa4fd7096146 560w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/datadog_otlp.png?w=840\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=e3caff5903e7eb3fef7860e45af3f929 840w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/datadog_otlp.png?w=1100\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=35a8a115ff7a35ce10b0e7385e93b537 1100w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/datadog_otlp.png?w=1650\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=4c077da8f7720a3e55ed52f4cefa7761 1650w, https://mintcdn.com/flipt/O1Bfdh4QkYyvK5vl/v1/images/configuration/datadog_otlp.png?w=2500\u0026fit=max\u0026auto=format\u0026n=O1Bfdh4QkYyvK5vl\u0026q=85\u0026s=5cdde34f71aaea85dddca1a0dfb05b98 2500w`}),`\n`,_jsx(_components.p,{children:`OTLP supports additional configuration such as specifying the protocol to use (gRPC or HTTP) as well as providing custom headers to send with the request.`}),`\n`,_jsxs(_components.p,{children:[`Custom headers can be used to provide authentication information to the collector which may be required if you are using a hosted collector such as `,_jsx(_components.a,{href:`https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-set-up-your-app/`,children:`NewRelic`}),`, `,_jsx(_components.a,{href:`https://docs.datadoghq.com/opentelemetry/otlp_ingest_in_the_agent/?tab=host`,children:`Datadog`}),`, or `,_jsx(_components.a,{href:`https://docs.honeycomb.io/getting-data-in/opentelemetry-overview/#instrumenting-with-opentelemetry`,children:`Honeycomb`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`These can be configured via the `,_jsx(_components.code,{children:`tracing.otlp`}),` configuration section.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`yaml`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`yaml`,children:_jsxs(_components.code,{language:`yaml`,numberOfLines:`7`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`tracing`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` enabled`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` exporter`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"otlp\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` otlp`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` endpoint`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://{your-collector-url}\"`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:` headers`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"X-Some-Header\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"some-value\"`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`4`,id:`environment-variables`,children:`Environment Variables`}),`\n`,_jsxs(_components.p,{children:[`Flipt supports OTLP specific resource environment variables that are part of the `,_jsx(_components.a,{href:`https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/`,children:`OTLP spec`}),`.`]}),`\n`,_jsx(_components.p,{children:`The following environment variables are supported:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`OTEL_SERVICE_NAME`}),` - Sets the value of the `,_jsx(_components.code,{children:`service.name`}),` resource attribute (default: `,_jsx(_components.code,{children:`flipt`}),`)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`OTEL_RESOURCE_ATTRIBUTES`}),` - Key-value pairs to be used as `,_jsx(_components.a,{href:`https://opentelemetry.io/docs/specs/semconv/resource/#semantic-attributes-with-dedicated-environment-variable`,children:`resource attributes`}),`.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Observability","description":"This document describes how to configure Flipt's observability mechanisms including metrics, logging, and tracing.","href":"/v1/configuration/observability"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Metrics","slug":"metrics","depth":2,"children":[{"title":"Prometheus","slug":"prometheus","depth":3,"children":[]},{"title":"OTLP","slug":"otlp","depth":3,"children":[]},{"title":"Dashboards","slug":"dashboards","depth":3,"children":[]}]},{"title":"Logging","slug":"logging","depth":2,"children":[{"title":"JSON","slug":"json","depth":3,"children":[]},{"title":"Log Key Descriptions","slug":"log-key-descriptions","depth":4,"children":[]},{"title":"Console","slug":"console","depth":3,"children":[]}]},{"title":"Tracing","slug":"tracing","depth":2,"children":[{"title":"OTLP","slug":"otlp-2","depth":3,"children":[]},{"title":"Environment Variables","slug":"environment-variables","depth":4,"children":[]}]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/flipt/40516028525ef955/reo.js"],"subdomain":"flipt","siteName":"Flipt","title":"Observability - Flipt","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2025-12-15T14:45:54.669Z","originalFileLocation":"v1/configuration/observability.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"This document describes how to configure Flipt\u0026#x27;s observability mechanisms including metrics, logging, and tracing.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Flipt\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Observability - Flipt\">\u003cmeta data-mint-head property=\"og:description\" content=\"This document describes how to configure Flipt\u0026#x27;s observability mechanisms including metrics, logging, and tracing.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Flipt Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.flipt.io/v1/configuration/observability\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://flipt.mintlify.site/_mintlify/api/og/v2?division=Configuration\u0026amp;title=Observability\u0026amp;description=This+document+describes+how+to+configure+Flipt%27s+observability+mechanisms+including+metrics%2C+logging%2C+and+tracing.\u0026amp;theme=fab54c02540c97cd47281fa2\u0026amp;signature=f2456b670ce8c286c15219e8c02aa9a4bc6516cf9f48420bf9669c13c2f92c15\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Observability - Flipt\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"This document describes how to configure Flipt\u0026#x27;s observability mechanisms including metrics, logging, and tracing.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://flipt.mintlify.site/_mintlify/api/og/v2?division=Configuration\u0026amp;title=Observability\u0026amp;description=This+document+describes+how+to+configure+Flipt%27s+observability+mechanisms+including+metrics%2C+logging%2C+and+tracing.\u0026amp;theme=fab54c02540c97cd47281fa2\u0026amp;signature=f2456b670ce8c286c15219e8c02aa9a4bc6516cf9f48420bf9669c13c2f92c15\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/flipt/h9R5ArEC_jBN_kca/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Flipt\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7C3AED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.flipt.io/v1/configuration/observability\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v1/configuration/observability.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.flipt.io/#organization\",\"name\":\"Flipt\",\"url\":\"https://docs.flipt.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/flipt/DEE1Qcfhk5tfKCOi/logo/light-logo.svg?fit=max\u0026auto=format\u0026n=DEE1Qcfhk5tfKCOi\u0026q=85\u0026s=a6aa20ecf9af822ec8f6786b13555d76\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.flipt.io#website\",\"name\":\"Flipt\",\"url\":\"https://docs.flipt.io\",\"publisher\":{\"@id\":\"https://docs.flipt.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.flipt.io/v1/configuration/observability#webpage\",\"url\":\"https://docs.flipt.io/v1/configuration/observability\",\"name\":\"Observability\",\"description\":\"This document describes how to configure Flipt's observability mechanisms including metrics, logging, and tracing.\",\"dateModified\":\"2025-12-15T14:45:54.669Z\",\"isPartOf\":{\"@id\":\"https://docs.flipt.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.flipt.io/v1/configuration/observability#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.flipt.io/v1/configuration/observability#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Configuration\",\"item\":\"https://docs.flipt.io/v1/configuration/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Observability\",\"item\":\"https://docs.flipt.io/v1/configuration/observability\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.flipt.io/v1/configuration/observability#article\",\"headline\":\"Observability\",\"name\":\"Observability\",\"description\":\"This document describes how to configure Flipt's observability mechanisms including metrics, logging, and tracing.\",\"url\":\"https://docs.flipt.io/v1/configuration/observability\",\"mainEntityOfPage\":{\"@id\":\"https://docs.flipt.io/v1/configuration/observability#webpage\"},\"dateModified\":\"2025-12-15T14:45:54.669Z\",\"publisher\":{\"@id\":\"https://docs.flipt.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.flipt.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Flipt\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Flipt","nav":{"global":null,"tabs":[{"tab":"v2","pages":[{"title":"v2","href":"/v2/introduction"}]},{"tab":"v1","anchors":[{"anchor":"Documentation","icon":"book-open","groups":[{"group":"Overview","pages":[{"title":"Getting Started","href":"/v1/introduction"},{"title":"Concepts","href":"/v1/concepts"}]},{"group":"Use Cases","pages":[{"title":"Overview","mode":"wide","href":"/v1/usecases/overview"},{"title":"CloudNative","mode":"wide","href":"/v1/usecases/cloudnative"},{"title":"Edge/IoT","mode":"wide","href":"/v1/usecases/edge"},{"title":"GitOps","mode":"wide","href":"/v1/usecases/gitops"}]},{"group":"Installation","pages":[{"title":"Overview","href":"/v1/installation/overview"},{"title":"Docker","href":"/v1/installation/docker"},{"title":"Kubernetes","href":"/v1/installation/kubernetes"}]},{"group":"Integration","pages":[{"title":"Overview","href":"/v1/integration/overview"},{"group":"Server-Side SDKs","pages":[{"title":"REST SDKs","href":"/v1/integration/server/rest"},{"title":"GRPC SDKs","href":"/v1/integration/server/grpc"}]},{"title":"Client-Side SDKs","href":"/v1/integration/client"},{"title":"OpenFeature","href":"/v1/integration/openfeature"},{"title":"Examples","href":"/v1/integration/examples"}]},{"group":"Guides","pages":[{"group":"User Guides","pages":[{"title":"Get Going with GitOps","href":"/v1/guides/user/get-going-with-gitops"},{"title":"Evaluating with References","href":"/v1/guides/user/using-references"}]},{"group":"Operations Guides","pages":[{"group":"Deployment","pages":[{"title":"Deploy to Fly.io","href":"/v1/guides/operation/deployment/deploy-to-flyio"},{"title":"Deploy to Kubernetes","href":"/v1/guides/operation/deployment/deploy-to-kubernetes"}]},{"group":"Authentication","pages":[{"title":"Login with Google","href":"/v1/guides/operation/authentication/login-with-google"},{"title":"Login with GitHub","href":"/v1/guides/operation/authentication/login-with-github"},{"title":"Login with Keycloak","href":"/v1/guides/operation/authentication/login-with-keycloak"}]},{"group":"Authorization","pages":[{"title":"Role-Based Access Control with Keycloak","href":"/v1/guides/operation/authorization/rbac-with-keycloak"}]}]},{"group":"Migration Guides","pages":[{"title":"Migrating from LaunchDarkly","mode":"wide","href":"/v1/guides/migration/launchdarkly/overview"},{"title":"Migrating from LaunchDarkly SDK to OpenFeature SDK","mode":"wide","href":"/v1/guides/migration/launchdarkly/openfeature"},{"title":"Switching from LaunchDarkly to Flipt","mode":"wide","href":"/v1/guides/migration/launchdarkly/flipt"}]}]},{"group":"Configuration","pages":[{"title":"Overview","href":"/v1/configuration/overview"},{"title":"Analytics","href":"/v1/configuration/analytics"},{"group":"Auditing","pages":[{"title":"Overview","href":"/v1/configuration/auditing/overview"},{"title":"Webhooks","href":"/v1/configuration/auditing/webhooks"}]},{"title":"Authentication","href":"/v1/configuration/authentication"},{"title":"Authorization","description":"This document describes how to configure Flipt's authorization mechanisms.","href":"/v1/configuration/authorization"},{"title":"Observability","href":"/v1/configuration/observability"},{"title":"Storage","description":"This document describes how to configure Flipt's storage backend mechanisms.","href":"/v1/configuration/storage"},{"title":"Caching","href":"/v1/configuration/caching"},{"title":"Telemetry","href":"/v1/configuration/telemetry"},{"title":"Experimental","href":"/v1/configuration/experimental"}]},{"group":"CLI","pages":[{"title":"Overview","href":"/v1/cli/overview"},{"group":"Commands","pages":[{"group":"config","pages":[{"title":"config init","href":"/v1/cli/commands/config/init"},{"title":"config edit","href":"/v1/cli/commands/config/edit"}]},{"group":"bundle","pages":[{"title":"bundle build","href":"/v1/cli/commands/bundle/build"},{"title":"bundle list","href":"/v1/cli/commands/bundle/list"},{"title":"bundle pull","href":"/v1/cli/commands/bundle/pull"},{"title":"bundle push","href":"/v1/cli/commands/bundle/push"}]},{"title":"evaluate","href":"/v1/cli/commands/evaluate"},{"title":"export","href":"/v1/cli/commands/export"},{"title":"import","href":"/v1/cli/commands/import"},{"title":"migrate","href":"/v1/cli/commands/migrate"},{"title":"validate","href":"/v1/cli/commands/validate"}]}]},{"group":"Authentication","pages":[{"title":"Overview","href":"/v1/authentication/overview"},{"title":"Methods","href":"/v1/authentication/methods"},{"title":"Using Client Tokens","href":"/v1/authentication/using-tokens"},{"title":"Using JSON Web Tokens","href":"/v1/authentication/using-jwts"}]},{"group":"Authorization","pages":[{"title":"Overview","href":"/v1/authorization/overview"}]},{"group":"Operations","pages":[{"title":"Architecture","href":"/v1/operations/architecture"},{"title":"Deployment","href":"/v1/operations/deployment"},{"title":"Import/Export","href":"/v1/operations/import-export"},{"title":"Production","href":"/v1/operations/production"},{"title":"Upgrading","href":"/v1/operations/upgrading"}]},{"group":"Tooling","pages":[{"title":"GitHub Actions","href":"/v1/tooling/github-actions"},{"title":"Model Context Protocol (MCP)","href":"/v1/tooling/model-context-protocol"}]}]},{"anchor":"API Reference","icon":"code","pages":[{"title":"API Reference","href":"/v1/reference/overview"}]},{"anchor":"Changelog","icon":"clock","pages":[{"title":"Changelog","href":"/v1/changelog/overview"}]},{"anchor":"Blog","icon":"newspaper","href":"https://blog.flipt.io"},{"anchor":"Discord","icon":"discord","href":"https://flipt.io/discord"},{"anchor":"GitHub","icon":"github","href":"https://git.new/flipt"}]}]},"basePath":"","title":"Observability - Flipt","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["10e4515597","a74be98ba7"],"chunks":["BannerMarkdown-BcDCEkh6.js","dist-CwjSCXIK.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","clsx-eKJ4rcii.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","zoom-image-lightbox-DMoL6lHz.js","lightbox-handle-r17bVUz3.js"]}