[{"data":1,"prerenderedAt":1349},["ShallowReactive",2],{"docs-navigation":3,"-docs-guides-monitoring":410,"-docs-guides-monitoring-surround":1344},[4,19,166,319,333,397],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":18},"Overview","i-lucide-compass","\u002Fdocs\u002Foverview","docs\u002F1.overview",[10,14],{"title":11,"path":12,"stem":13},"Introduction","\u002Fdocs\u002Foverview\u002Fintroduction","docs\u002F1.overview\u002F1.introduction",{"title":15,"path":16,"stem":17},"JFrog compatibility","\u002Fdocs\u002Foverview\u002Fjfrog-compatibility","docs\u002F1.overview\u002F2.jfrog-compatibility",false,{"title":20,"icon":21,"path":22,"stem":23,"children":24,"page":18},"Installation","i-lucide-download","\u002Fdocs\u002Finstallation","docs\u002F2.installation",[25,29,43,68,108,112,116,162],{"title":26,"path":27,"stem":28},"Choosing a method","\u002Fdocs\u002Finstallation\u002Foverview","docs\u002F2.installation\u002F1.overview",{"title":30,"icon":31,"path":32,"stem":33,"children":34,"page":18},"Single binary","i-lucide-terminal","\u002Fdocs\u002Finstallation\u002Fsingle-binary","docs\u002F2.installation\u002F2.single-binary",[35,39],{"title":36,"path":37,"stem":38},"Quick start","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Fquick-start","docs\u002F2.installation\u002F2.single-binary\u002F1.quick-start",{"title":40,"path":41,"stem":42},"Limits and backups","\u002Fdocs\u002Finstallation\u002Fsingle-binary\u002Foperations","docs\u002F2.installation\u002F2.single-binary\u002F2.operations",{"title":44,"icon":45,"path":46,"stem":47,"children":48,"page":18},"Docker","i-simple-icons-docker","\u002Fdocs\u002Finstallation\u002Fdocker","docs\u002F2.installation\u002F3.docker",[49,52,56,60,64],{"title":36,"path":50,"stem":51},"\u002Fdocs\u002Finstallation\u002Fdocker\u002Fquick-start","docs\u002F2.installation\u002F3.docker\u002F1.quick-start",{"title":53,"path":54,"stem":55},"PostgreSQL and S3","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fpostgresql-and-s3","docs\u002F2.installation\u002F3.docker\u002F2.postgresql-and-s3",{"title":57,"path":58,"stem":59},"Docker Compose","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose","docs\u002F2.installation\u002F3.docker\u002F3.compose",{"title":61,"path":62,"stem":63},"Compose settings","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-settings","docs\u002F2.installation\u002F3.docker\u002F4.compose-settings",{"title":65,"path":66,"stem":67},"Compose with another object store","\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-other-object-storage","docs\u002F2.installation\u002F3.docker\u002F5.compose-other-object-storage",{"title":69,"icon":70,"path":71,"stem":72,"children":73,"page":18},"Kubernetes","i-simple-icons-kubernetes","\u002Fdocs\u002Finstallation\u002Fkubernetes","docs\u002F2.installation\u002F4.kubernetes",[74,77,80,84,88,92,96,100,104],{"title":5,"path":75,"stem":76},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Foverview","docs\u002F2.installation\u002F4.kubernetes\u002F1.overview",{"title":36,"path":78,"stem":79},"\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fquick-start","docs\u002F2.installation\u002F4.kubernetes\u002F2.quick-start",{"title":81,"path":82,"stem":83},"External PostgreSQL","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-postgresql","docs\u002F2.installation\u002F4.kubernetes\u002F3.external-postgresql",{"title":85,"path":86,"stem":87},"External object storage","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexternal-object-storage","docs\u002F2.installation\u002F4.kubernetes\u002F4.external-object-storage",{"title":89,"path":90,"stem":91},"Exposing Relic","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fexposing","docs\u002F2.installation\u002F4.kubernetes\u002F5.exposing",{"title":93,"path":94,"stem":95},"Values","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fvalues","docs\u002F2.installation\u002F4.kubernetes\u002F6.values",{"title":97,"path":98,"stem":99},"Upgrades and removal","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fupgrades","docs\u002F2.installation\u002F4.kubernetes\u002F7.upgrades",{"title":101,"path":102,"stem":103},"Hardening and probes","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fhardening","docs\u002F2.installation\u002F4.kubernetes\u002F8.hardening",{"title":105,"path":106,"stem":107},"Monitoring","\u002Fdocs\u002Finstallation\u002Fkubernetes\u002Fmonitoring","docs\u002F2.installation\u002F4.kubernetes\u002F9.monitoring",{"title":109,"path":110,"stem":111},"Cloudflare","\u002Fdocs\u002Finstallation\u002Fcloudflare","docs\u002F2.installation\u002F5.cloudflare",{"title":113,"path":114,"stem":115},"Configuration reference","\u002Fdocs\u002Finstallation\u002Fconfiguration","docs\u002F2.installation\u002F6.configuration",{"title":117,"icon":118,"path":119,"stem":120,"children":121,"page":18},"Storage","i-lucide-hard-drive","\u002Fdocs\u002Finstallation\u002Fstorage","docs\u002F2.installation\u002F7.storage",[122,126,130,134,138,142,146,150,154,158],{"title":123,"path":124,"stem":125},"Storage overview","\u002Fdocs\u002Finstallation\u002Fstorage\u002Foverview","docs\u002F2.installation\u002F7.storage\u002F1.overview",{"title":127,"path":128,"stem":129},"Azure Blob Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fazure-blob-storage","docs\u002F2.installation\u002F7.storage\u002F10.azure-blob-storage",{"title":131,"path":132,"stem":133},"SeaweedFS","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fseaweedfs","docs\u002F2.installation\u002F7.storage\u002F2.seaweedfs",{"title":135,"path":136,"stem":137},"Amazon S3","\u002Fdocs\u002Finstallation\u002Fstorage\u002Famazon-s3","docs\u002F2.installation\u002F7.storage\u002F3.amazon-s3",{"title":139,"path":140,"stem":141},"Cloudflare R2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fcloudflare-r2","docs\u002F2.installation\u002F7.storage\u002F4.cloudflare-r2",{"title":143,"path":144,"stem":145},"MinIO","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fminio","docs\u002F2.installation\u002F7.storage\u002F5.minio",{"title":147,"path":148,"stem":149},"Google Cloud Storage","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fgoogle-cloud-storage","docs\u002F2.installation\u002F7.storage\u002F6.google-cloud-storage",{"title":151,"path":152,"stem":153},"Backblaze B2","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fbackblaze-b2","docs\u002F2.installation\u002F7.storage\u002F7.backblaze-b2",{"title":155,"path":156,"stem":157},"Other S3-compatible services","\u002Fdocs\u002Finstallation\u002Fstorage\u002Fother","docs\u002F2.installation\u002F7.storage\u002F8.other",{"title":159,"path":160,"stem":161},"Filesystem","\u002Fdocs\u002Finstallation\u002Fstorage\u002Ffilesystem","docs\u002F2.installation\u002F7.storage\u002F9.filesystem",{"title":163,"path":164,"stem":165},"Development","\u002Fdocs\u002Finstallation\u002Fdevelopment","docs\u002F2.installation\u002F8.development",{"title":167,"icon":168,"path":169,"stem":170,"children":171,"page":18},"Guides","i-lucide-book-open","\u002Fdocs\u002Fguides","docs\u002F3.guides",[172,176,180,254,296,300,303,307,311,315],{"title":173,"path":174,"stem":175},"Repositories","\u002Fdocs\u002Fguides\u002Frepositories","docs\u002F3.guides\u002F1.repositories",{"title":177,"path":178,"stem":179},"Replication","\u002Fdocs\u002Fguides\u002Freplication","docs\u002F3.guides\u002F10.replication",{"title":181,"icon":182,"path":183,"stem":184,"children":185,"page":18},"Package types","i-lucide-package","\u002Fdocs\u002Fguides\u002Fpackage-types","docs\u002F3.guides\u002F2.package-types",[186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250],{"title":187,"path":188,"stem":189},"npm, yarn and pnpm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnpm","docs\u002F3.guides\u002F2.package-types\u002F01.npm",{"title":191,"path":192,"stem":193},"Maven and Gradle","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fmaven-gradle","docs\u002F3.guides\u002F2.package-types\u002F02.maven-gradle",{"title":195,"path":196,"stem":197},"Docker and OCI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdocker","docs\u002F3.guides\u002F2.package-types\u002F03.docker",{"title":199,"path":200,"stem":201},"Go","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgo","docs\u002F3.guides\u002F2.package-types\u002F04.go",{"title":203,"path":204,"stem":205},"PyPI","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fpypi","docs\u002F3.guides\u002F2.package-types\u002F05.pypi",{"title":207,"path":208,"stem":209},"Helm","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhelm","docs\u002F3.guides\u002F2.package-types\u002F06.helm",{"title":211,"path":212,"stem":213},"NuGet","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnuget","docs\u002F3.guides\u002F2.package-types\u002F07.nuget",{"title":215,"path":216,"stem":217},"RubyGems","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frubygems","docs\u002F3.guides\u002F2.package-types\u002F08.rubygems",{"title":219,"path":220,"stem":221},"Cargo","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fcargo","docs\u002F3.guides\u002F2.package-types\u002F09.cargo",{"title":223,"path":224,"stem":225},"Conan","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fconan","docs\u002F3.guides\u002F2.package-types\u002F10.conan",{"title":227,"path":228,"stem":229},"Terraform and OpenTofu","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fterraform","docs\u002F3.guides\u002F2.package-types\u002F11.terraform",{"title":231,"path":232,"stem":233},"Hugging Face","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fhugging-face","docs\u002F3.guides\u002F2.package-types\u002F12.hugging-face",{"title":235,"path":236,"stem":237},"Generic files","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fgeneric","docs\u002F3.guides\u002F2.package-types\u002F13.generic",{"title":239,"path":240,"stem":241},"RPM","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Frpm","docs\u002F3.guides\u002F2.package-types\u002F14.rpm",{"title":243,"path":244,"stem":245},"Debian","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fdebian","docs\u002F3.guides\u002F2.package-types\u002F15.debian",{"title":247,"path":248,"stem":249},"Alpine","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Falpine","docs\u002F3.guides\u002F2.package-types\u002F16.alpine",{"title":251,"path":252,"stem":253},"Nix","\u002Fdocs\u002Fguides\u002Fpackage-types\u002Fnix","docs\u002F3.guides\u002F2.package-types\u002F17.nix",{"title":255,"icon":256,"path":257,"stem":258,"children":259,"page":18},"Security","i-lucide-shield","\u002Fdocs\u002Fguides\u002Fsecurity","docs\u002F3.guides\u002F3.security",[260,264,268,272,276,280,284,288,292],{"title":261,"path":262,"stem":263},"Permissions","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fpermissions","docs\u002F3.guides\u002F3.security\u002F1.permissions",{"title":265,"path":266,"stem":267},"LDAP","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fldap","docs\u002F3.guides\u002F3.security\u002F2.ldap",{"title":269,"path":270,"stem":271},"Access tokens","\u002Fdocs\u002Fguides\u002Fsecurity\u002Ftokens","docs\u002F3.guides\u002F3.security\u002F3.tokens",{"title":273,"path":274,"stem":275},"Relic Scan","\u002Fdocs\u002Fguides\u002Fsecurity\u002Frelic-scan","docs\u002F3.guides\u002F3.security\u002F4.relic-scan",{"title":277,"path":278,"stem":279},"CVE intelligence","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fcve-intelligence","docs\u002F3.guides\u002F3.security\u002F5.cve-intelligence",{"title":281,"path":282,"stem":283},"Audit log","\u002Fdocs\u002Fguides\u002Fsecurity\u002Faudit-log","docs\u002F3.guides\u002F3.security\u002F6.audit-log",{"title":285,"path":286,"stem":287},"Single sign-on","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fsingle-sign-on","docs\u002F3.guides\u002F3.security\u002F7.single-sign-on",{"title":289,"path":290,"stem":291},"SCIM provisioning","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fscim","docs\u002F3.guides\u002F3.security\u002F8.scim",{"title":293,"path":294,"stem":295},"Workload identities","\u002Fdocs\u002Fguides\u002Fsecurity\u002Fworkload-identities","docs\u002F3.guides\u002F3.security\u002F9.workload-identities",{"title":297,"path":298,"stem":299},"Operations","\u002Fdocs\u002Fguides\u002Foperations","docs\u002F3.guides\u002F4.operations",{"title":105,"path":301,"stem":302},"\u002Fdocs\u002Fguides\u002Fmonitoring","docs\u002F3.guides\u002F5.monitoring",{"title":304,"path":305,"stem":306},"Metrics reference","\u002Fdocs\u002Fguides\u002Fmetrics-reference","docs\u002F3.guides\u002F6.metrics-reference",{"title":308,"path":309,"stem":310},"Webhooks","\u002Fdocs\u002Fguides\u002Fwebhooks","docs\u002F3.guides\u002F7.webhooks",{"title":312,"path":313,"stem":314},"Projects","\u002Fdocs\u002Fguides\u002Fprojects","docs\u002F3.guides\u002F8.projects",{"title":316,"path":317,"stem":318},"AI agents","\u002Fdocs\u002Fguides\u002Fai-agents","docs\u002F3.guides\u002F9.ai-agents",{"title":320,"icon":321,"path":322,"stem":323,"children":324,"page":18},"API","i-lucide-braces","\u002Fdocs\u002Fapi","docs\u002F4.api",[325,329],{"title":326,"path":327,"stem":328},"API usage","\u002Fdocs\u002Fapi\u002Foverview","docs\u002F4.api\u002F1.overview",{"title":330,"path":331,"stem":332},"Relic API","\u002Fdocs\u002Fapi\u002Frelic-api","docs\u002F4.api\u002F2.relic-api",{"title":334,"icon":31,"path":335,"stem":336,"children":337,"page":18},"CLI","\u002Fdocs\u002Fcli","docs\u002F5.cli",[338,341,345,349,353,357,361,365,369,373,377,381,385,389,393],{"title":5,"path":339,"stem":340},"\u002Fdocs\u002Fcli\u002Foverview","docs\u002F5.cli\u002F01.overview",{"title":342,"path":343,"stem":344},"Sign in and contexts","\u002Fdocs\u002Fcli\u002Fsign-in","docs\u002F5.cli\u002F02.sign-in",{"title":346,"path":347,"stem":348},"Resources","\u002Fdocs\u002Fcli\u002Fresources","docs\u002F5.cli\u002F03.resources",{"title":350,"path":351,"stem":352},"apply, diff and delete","\u002Fdocs\u002Fcli\u002Fapply","docs\u002F5.cli\u002F04.apply",{"title":354,"path":355,"stem":356},"Artifacts","\u002Fdocs\u002Fcli\u002Ffiles","docs\u002F5.cli\u002F05.files",{"title":358,"path":359,"stem":360},"Server, API and tokens","\u002Fdocs\u002Fcli\u002Fplatform","docs\u002F5.cli\u002F06.platform",{"title":362,"path":363,"stem":364},"Builds and images","\u002Fdocs\u002Fcli\u002Fbuilds","docs\u002F5.cli\u002F07.builds",{"title":366,"path":367,"stem":368},"Scanning and auditing","\u002Fdocs\u002Fcli\u002Fsecurity","docs\u002F5.cli\u002F08.security",{"title":370,"path":371,"stem":372},"Releases","\u002Fdocs\u002Fcli\u002Freleases","docs\u002F5.cli\u002F09.releases",{"title":374,"path":375,"stem":376},"Evidence","\u002Fdocs\u002Fcli\u002Fevidence","docs\u002F5.cli\u002F10.evidence",{"title":378,"path":379,"stem":380},"Package managers","\u002Fdocs\u002Fcli\u002Fpackage-managers","docs\u002F5.cli\u002F11.package-managers",{"title":382,"path":383,"stem":384},"Scan reports and VEX","\u002Fdocs\u002Fcli\u002Freports-and-vex","docs\u002F5.cli\u002F12.reports-and-vex",{"title":386,"path":387,"stem":388},"Migrating from Artifactory","\u002Fdocs\u002Fcli\u002Fimport","docs\u002F5.cli\u002F13.import",{"title":390,"path":391,"stem":392},"Database","\u002Fdocs\u002Fcli\u002Fdatabase","docs\u002F5.cli\u002F14.database",{"title":394,"path":395,"stem":396},"Machine setup","\u002Fdocs\u002Fcli\u002Fsetup","docs\u002F5.cli\u002F15.setup",{"title":398,"icon":399,"path":400,"stem":401,"children":402,"page":18},"SDK","i-lucide-boxes","\u002Fdocs\u002Fsdk","docs\u002F6.sdk",[403,406],{"title":5,"path":404,"stem":405},"\u002Fdocs\u002Fsdk\u002Foverview","docs\u002F6.sdk\u002F1.overview",{"title":407,"path":408,"stem":409},"Relic API clients","\u002Fdocs\u002Fsdk\u002Frelic-api-clients","docs\u002F6.sdk\u002F2.relic-api-clients",{"id":411,"title":105,"body":412,"description":1337,"extension":1338,"links":1339,"meta":1340,"navigation":1341,"path":301,"seo":1342,"stem":302,"__hash__":1343},"docs\u002Fdocs\u002F3.guides\u002F5.monitoring.md",{"type":413,"value":414,"toc":1312},"minimark",[415,439,444,467,478,591,598,602,612,618,622,637,676,680,750,763,767,928,932,935,939,962,965,992,995,998,1019,1022,1025,1033,1036,1062,1065,1082,1085,1092,1107,1110,1129,1132,1143,1146,1154,1157,1160,1170,1173,1176,1230,1233,1244,1272,1275,1293,1308],[416,417,418,419,423,424,428,429,433,434,438],"p",{},"Relic exports Prometheus metrics, OpenTelemetry traces and structured logs.\n",[420,421,422],"code",{},"deploy\u002Fobservability\u002F"," holds seven Grafana dashboards and the alert rules,\nwhich the Helm chart and the Compose stack can install: see\n",[425,426,427],"a",{"href":106},"Kubernetes: Monitoring"," and\n",[425,430,432],{"href":431},"\u002Fdocs\u002Finstallation\u002Fdocker\u002Fcompose-settings#observability-profile","Compose: Observability profile",".\nSettings are in the ",[425,435,437],{"href":436},"\u002Fdocs\u002Finstallation\u002Fconfiguration#telemetry","configuration reference",".",[440,441,443],"h2",{"id":442},"metrics","Metrics",[416,445,446,447,450,451,454,455,458,459,462,463,466],{},"The server and the worker serve ",[420,448,449],{},"\u002Fmetrics"," on a separate port\n(",[420,452,453],{},"RELIC_METRICS_LISTEN_ADDRESS",", default ",[420,456,457],{},":8091","), never on the API port. It has\nno authentication: keep it inside your network. ",[420,460,461],{},"RELIC_PROFILING_ENABLED=true","\nadds Go's profiler at ",[420,464,465],{},"\u002Fdebug\u002Fpprof\u002F"," on the same port.",[416,468,469,470,473,474,477],{},"Series start with ",[420,471,472],{},"relic_","; the ",[425,475,476],{"href":305},"metrics reference","\nlists them. They cover:",[479,480,481,494],"table",{},[482,483,484],"thead",{},[485,486,487,491],"tr",{},[488,489,490],"th",{},"Area",[488,492,493],{},"Series",[495,496,497,535,542,550,567,575,583],"tbody",{},[485,498,499,503],{},[500,501,502],"td",{},"HTTP",[500,504,505,506,509,510,509,513,509,516,509,519,509,522,509,525,509,528,509,531,534],{},"per API family (",[420,507,508],{},"relic",", ",[420,511,512],{},"packages",[420,514,515],{},"container-registry",[420,517,518],{},"scanning",[420,520,521],{},"access",[420,523,524],{},"releases",[420,526,527],{},"evidence",[420,529,530],{},"ui",[420,532,533],{},"health","), route, method and status class",[485,536,537,539],{},[500,538,330],{},[500,540,541],{},"per service, method and Connect code",[485,543,544,547],{},[500,545,546],{},"Auth",[500,548,549],{},"sign-in attempts, issued tokens, LDAP operations",[485,551,552,554],{},[500,553,354],{},[500,555,556,557,509,560,509,563,566],{},"uploads and downloads by format, repository class and source (",[420,558,559],{},"local",[420,561,562],{},"cache",[420,564,565],{},"upstream","); remote upstreams and cache results",[485,568,569,572],{},[500,570,571],{},"Storage and database",[500,573,574],{},"object storage operations; the database pool and query latency by query name",[485,576,577,580],{},[500,578,579],{},"Background work",[500,581,582],{},"jobs by kind and queue, Relic Scan, garbage collection, the trash can, replication, builds and releases",[485,584,585,588],{},[500,586,587],{},"Inventory",[500,589,590],{},"counted every five minutes: repositories, stored and unreferenced bytes, blobs, users, builds, findings by severity, CVE feed ages",[416,592,593,594,597],{},"Labels never hold a user, path, digest, token or address.\n",[420,595,596],{},"RELIC_METRICS_REPOSITORY_LABEL=true"," adds the repository name to the artifact,\nupstream, cache and replication series.",[440,599,601],{"id":600},"traces","Traces",[416,603,604,605,608,609,438],{},"Set ",[420,606,607],{},"OTEL_EXPORTER_OTLP_ENDPOINT"," (OTLP over HTTP) to trace every request\nexcept health probes, down to database, object storage, upstream and LDAP calls.\nQueued jobs get a span linked to the request. Relic honours and forwards\n",[420,610,611],{},"traceparent",[416,613,614,617],{},[420,615,616],{},"OTEL_TRACES_SAMPLER"," sets which traces are kept. The Helm chart keeps 10% of new\ntraces and follows a traced caller; Compose keeps all.",[440,619,621],{"id":620},"logs","Logs",[416,623,624,625,628,629,632,633,636],{},"Relic writes JSON lines to stderr at ",[420,626,627],{},"RELIC_LOG_LEVEL","; ",[420,630,631],{},"RELIC_LOG_FORMAT=text","\nsuits a terminal. ",[420,634,635],{},"OTEL_LOGS_EXPORTER=otlp"," also sends records over OTLP.",[638,639,640,659,666],"ul",{},[641,642,643,644,647,648,651,652,655,656,438],"li",{},"Request lines carry ",[420,645,646],{},"request_id",", also returned as ",[420,649,650],{},"X-Request-Id",", and, when\ntraced, ",[420,653,654],{},"trace_id"," and ",[420,657,658],{},"span_id",[641,660,661,662,665],{},"A request still running after 10 seconds logs a ",[420,663,664],{},"slow request"," warning.",[641,667,668,669,672,673,438],{},"A failed telemetry export logs ",[420,670,671],{},"telemetry export failed"," and counts in\n",[420,674,675],{},"relic_telemetry_errors_total",[440,677,679],{"id":678},"dashboards","Dashboards",[479,681,682,692],{},[482,683,684],{},[485,685,686,689],{},[488,687,688],{},"Dashboard",[488,690,691],{},"Shows",[495,693,694,702,710,718,726,734,742],{},[485,695,696,699],{},[500,697,698],{},"Relic \u002F Overview",[500,700,701],{},"traffic, errors and latency per API family, saturation, logs by request or trace ID",[485,703,704,707],{},[500,705,706],{},"Relic \u002F Packages and repositories",[500,708,709],{},"uploads and downloads by format, cache hit ratio, upstream latency and errors, builds and releases",[485,711,712,715],{},[500,713,714],{},"Relic \u002F Storage and garbage collection",[500,716,717],{},"stored and unreferenced content, object storage operations, garbage collection, the trash can",[485,719,720,723],{},[500,721,722],{},"Relic \u002F Relic Scan",[500,724,725],{},"backlog, scan stages, findings, blocked downloads, database and feed ages",[485,727,728,731],{},[500,729,730],{},"Relic \u002F Jobs and worker",[500,732,733],{},"jobs by kind, queues, push replication",[485,735,736,739],{},[500,737,738],{},"Relic \u002F Database",[500,740,741],{},"the connection pool and the slowest queries",[485,743,744,747],{},[500,745,746],{},"Relic \u002F Go runtime",[500,748,749],{},"CPU, memory, goroutines, garbage collection",[416,751,752,753,509,756,655,759,762],{},"Each has ",[420,754,755],{},"datasource",[420,757,758],{},"namespace",[420,760,761],{},"instance"," variables. A latency panel's\nexemplar opens its trace in Tempo.",[440,764,766],{"id":765},"alerts","Alerts",[479,768,769,782],{},[482,770,771],{},[485,772,773,776,779],{},[488,774,775],{},"Alert",[488,777,778],{},"Fires when",[488,780,781],{},"Severity",[495,783,784,795,805,816,827,837,847,857,868,878,888,898,908,918],{},[485,785,786,789,792],{},[500,787,788],{},"RelicDown",[500,790,791],{},"no server has been scraped for 5 minutes",[500,793,794],{},"critical",[485,796,797,800,803],{},[500,798,799],{},"RelicHighErrorRate",[500,801,802],{},"over 5% of an API family's requests answer 5xx for 10 minutes",[500,804,794],{},[485,806,807,810,813],{},[500,808,809],{},"RelicDownloadLatencySLO",[500,811,812],{},"downloads burn the \"99% within 2 s\" budget fast (1 hour) or slowly (6 hours)",[500,814,815],{},"critical \u002F warning",[485,817,818,821,824],{},[500,819,820],{},"RelicUpstreamErrors",[500,822,823],{},"over 20% of a format's upstream requests fail for 15 minutes",[500,825,826],{},"warning",[485,828,829,832,835],{},[500,830,831],{},"RelicDBPoolExhausted",[500,833,834],{},"every database connection is in use and requests wait, for 10 minutes",[500,836,826],{},[485,838,839,842,845],{},[500,840,841],{},"RelicJobBacklog",[500,843,844],{},"a job kind's oldest job has waited over 30 minutes",[500,846,826],{},[485,848,849,852,855],{},[500,850,851],{},"RelicScanBacklog",[500,853,854],{},"the scan backlog grows for an hour, or the vulnerability database is over 3 days old",[500,856,826],{},[485,858,859,862,865],{},[500,860,861],{},"RelicCVEFeedStale",[500,863,864],{},"a CVE feed is older than 3 times its refresh interval",[500,866,867],{},"info",[485,869,870,873,876],{},[500,871,872],{},"RelicGCFailing",[500,874,875],{},"no garbage collection run succeeded in 6 hours",[500,877,826],{},[485,879,880,883,886],{},[500,881,882],{},"RelicReplicationFailing",[500,884,885],{},"a repository's last 3 replication runs failed",[500,887,826],{},[485,889,890,893,896],{},[500,891,892],{},"RelicStorageErrors",[500,894,895],{},"over 1% of object storage operations fail for 10 minutes",[500,897,794],{},[485,899,900,903,906],{},[500,901,902],{},"RelicContentIntegrity",[500,904,905],{},"stored content is missing or does not match its checksum",[500,907,794],{},[485,909,910,913,916],{},[500,911,912],{},"RelicDiskSpaceLow",[500,914,915],{},"under 10% of a single node's volume is free for 15 minutes",[500,917,826],{},[485,919,920,923,926],{},[500,921,922],{},"RelicServerCertificateExpiring",[500,924,925],{},"the server's certificate expires within 14 days",[500,927,826],{},[440,929,931],{"id":930},"runbooks","Runbooks",[416,933,934],{},"Each alert links to its section below.",[936,937,788],"h3",{"id":938},"relicdown",[940,941,942,952,955],"ol",{},[641,943,944,945,948,949,438],{},"Check the pods or containers: ",[420,946,947],{},"kubectl get pods -l app.kubernetes.io\u002Fcomponent=server","\nor ",[420,950,951],{},"docker compose ps relic-server",[641,953,954],{},"A server in a restart loop usually cannot reach PostgreSQL or object storage,\nor cannot apply a migration. Read its last log lines.",[641,956,957,958,961],{},"If it runs, check that Prometheus reaches port ",[420,959,960],{},"8091"," and that the\nServiceMonitor selects the Service.",[936,963,799],{"id":964},"relichigherrorrate",[940,966,967,982,989],{},[641,968,969,970,973,974,428,978,981],{},"On ",[971,972,698],"strong",{},", find the failing routes in ",[975,976,977],"em",{},"5xx ratio",[975,979,980],{},"Slowest routes",", and open an exemplar's trace.",[641,983,984,985,988],{},"Filter the log panel by the trace ID; the ",[420,986,987],{},"error"," field names the cause.",[641,990,991],{},"If RelicDBPoolExhausted or RelicStorageErrors fire, start there.",[936,993,809],{"id":994},"relicdownloadlatencyslo",[416,996,997],{},"Critical burns the budget fast (1 hour of data); warning burns it slowly (6\nhours).",[940,999,1000,1005,1014],{},[641,1001,969,1002,1004],{},[971,1003,706],{},", check whether slow downloads come\nfrom remote repositories (upstream latency) or local ones.",[641,1006,969,1007,1009,1010,1013],{},[971,1008,714],{},", check ",[420,1011,1012],{},"get"," latency.",[641,1015,969,1016,1018],{},[971,1017,738],{},", check pool waits and slow queries.",[936,1020,820],{"id":1021},"relicupstreamerrors",[416,1023,1024],{},"Relic still serves cached content.",[940,1026,1027,1030],{},[641,1028,1029],{},"Check that the upstream answers from Relic's network: egress, proxy, DNS.",[641,1031,1032],{},"While an upstream is down, you can set its remote repositories offline.",[936,1034,831],{"id":1035},"relicdbpoolexhausted",[940,1037,1038,1046,1052],{},[641,1039,969,1040,1042,1043,438],{},[971,1041,738],{},", find the queries holding connections in ",[975,1044,1045],{},"Time spent\nby query",[641,1047,1048,1051],{},[420,1049,1050],{},"RELIC_DATABASE_STATEMENT_TIMEOUT"," cuts long queries. Check PostgreSQL locks\nand I\u002FO on the CloudNativePG dashboard.",[641,1053,1054,1055,1058,1059,438],{},"Add server replicas, or raise ",[420,1056,1057],{},"RELIC_DATABASE_MAX_CONNECTIONS"," (default 20).\nReplicas × pool size, plus the worker's pool, must fit PostgreSQL's\n",[420,1060,1061],{},"max_connections",[936,1063,841],{"id":1064},"relicjobbacklog",[940,1066,1067,1074,1079],{},[641,1068,1069,1070,1073],{},"Check that a worker runs (",[420,1071,1072],{},"relic_build_info{component=\"worker\"}",").",[641,1075,969,1076,1078],{},[971,1077,730],{},", check which kinds wait and whether they fail.",[641,1080,1081],{},"Long scans occupy the scan queue. Add worker replicas if the backlog grows.",[936,1083,851],{"id":1084},"relicscanbacklog",[416,1086,1087,1088,1091],{},"The ",[420,1089,1090],{},"cause"," label says which condition fired.",[940,1093,1094,1100],{},[641,1095,1096,1097,1099],{},"Backlog: see ",[971,1098,722],{},". Each worker runs at most two scans at a\ntime. Add worker replicas, or check the worker logs for scan failures.",[641,1101,1102,1103,1106],{},"Old database: the worker updates it every 12 hours, which needs outbound\naccess or, air-gapped, an imported archive. Check the ",[420,1104,1105],{},"scan_db"," job's errors\non the System page.",[936,1108,861],{"id":1109},"reliccvefeedstale",[940,1111,1112,1119],{},[641,1113,1114,1115,1118],{},"The hourly ",[420,1116,1117],{},"cve_refresh"," job reads the EPSS and KEV feeds; its last error is\non the System page.",[641,1120,1121,1122,655,1125,1128],{},"Air-gapped sites point ",[420,1123,1124],{},"RELIC_CVE_EPSS_URL",[420,1126,1127],{},"RELIC_CVE_KEV_URL"," at a\ngeneric repository. Update the files there.",[936,1130,872],{"id":1131},"relicgcfailing",[940,1133,1134,1140],{},[641,1135,1087,1136,1139],{},[420,1137,1138],{},"gc"," job's error is on the System page and in the worker's logs.",[641,1141,1142],{},"Usually object storage refuses deletes (credentials or bucket policy). See\nRelicStorageErrors.",[936,1144,882],{"id":1145},"relicreplicationfailing",[940,1147,1148,1151],{},[641,1149,1150],{},"The last error is on the repository's replication page.",[641,1152,1153],{},"Check the target's URL and credentials, and that the worker reaches it.",[936,1155,892],{"id":1156},"relicstorageerrors",[416,1158,1159],{},"Uploads and downloads fail with these operations.",[940,1161,1162,1167],{},[641,1163,969,1164,1166],{},[971,1165,714],{},", check which operations fail.",[641,1168,1169],{},"Check the S3 endpoint (SeaweedFS pods or the provider's status), the\ncredentials and free space.",[936,1171,902],{"id":1172},"reliccontentintegrity",[416,1174,1175],{},"Relic refuses to serve missing or damaged content until it is restored.",[940,1177,1178,1189,1220,1223],{},[641,1179,1180,1181,1184,1185,1188],{},"A read logs ",[420,1182,1183],{},"stored content is missing"," or ",[420,1186,1187],{},"stored content does not match its checksum",", with the SHA-256, repository and path.",[641,1190,1191,1192],{},"Run the storage check and print its report, which lists each missing or\ndamaged object:",[1193,1194,1199],"pre",{"className":1195,"code":1196,"language":1197,"meta":1198,"style":1198},"language-bash shiki shiki-themes material-theme-lighter github-light-default github-dark-default","relic storage check --wait\n","bash","",[420,1200,1201],{"__ignoreMap":1198},[1202,1203,1206,1209,1213,1216],"span",{"class":1204,"line":1205},"line",1,[1202,1207,508],{"class":1208},"seIyd",[1202,1210,1212],{"class":1211},"sasMN"," storage",[1202,1214,1215],{"class":1211}," check",[1202,1217,1219],{"class":1218},"smky3"," --wait\n",[641,1221,1222],{},"Upload the file again with any client; Relic replaces the stored object.",[641,1224,1225,1226,1229],{},"If many objects are affected, check the store: a lost volume, a lifecycle\nrule deleting from ",[420,1227,1228],{},"artifacts",", or a restore from an older backup.",[936,1231,912],{"id":1232},"relicdiskspacelow",[416,1234,1235,1236,1239,1240,1243],{},"The volume holds the SQLite database (",[420,1237,1238],{},"volume=\"database\"",") or the filesystem\nobject store (",[420,1241,1242],{},"volume=\"object_storage\"","). Writes fail when it fills.",[940,1245,1246,1252,1262],{},[641,1247,1248,1251],{},[420,1249,1250],{},"relic_db_sqlite_file_bytes"," is the database's share; the rest is content.",[641,1253,1254,1255,1258,1259,438],{},"Empty the trash and lower ",[420,1256,1257],{},"RELIC_TRASH_RETENTION","; garbage collection then\nreclaims unreferenced content after ",[420,1260,1261],{},"RELIC_GARBAGE_COLLECTION_GRACE_PERIOD",[641,1263,1264,1265,1268,1269,438],{},"Grow the volume (in Helm, ",[420,1266,1267],{},"data.size"," on an expandable storage class), or move\nto S3 and PostgreSQL with ",[420,1270,1271],{},"relic server database copy",[936,1273,922],{"id":1274},"relicservercertificateexpiring",[416,1276,1277,1280,1281,1284,1285,1288,1289,1292],{},[420,1278,1279],{},"source=\"operator\""," is your certificate (",[420,1282,1283],{},"RELIC_TLS_CERTIFICATE_FILE",",\n",[420,1286,1287],{},"RELIC_TLS_KEY_FILE","); ",[420,1290,1291],{},"source=\"generated\""," is one Relic issued.",[940,1294,1295,1298,1301],{},[641,1296,1297],{},"Renew your certificate and replace the files; the server reloads them\nwithout a restart.",[641,1299,1300],{},"With cert-manager, check the Certificate's status and the issuer's events.",[641,1302,1303,1304,1307],{},"Relic renews a generated certificate 30 days before expiry. If the alert\nfires for one, the server cannot write ",[420,1305,1306],{},"RELIC_TLS_DIRECTORY",": check the logs\nand its permissions.",[1309,1310,1311],"style",{},"html pre.shiki code .seIyd, html code.shiki .seIyd{--shiki-light:#E2931D;--shiki-default:#953800;--shiki-dark:#FFA657}html pre.shiki code .sasMN, html code.shiki .sasMN{--shiki-light:#91B859;--shiki-default:#0A3069;--shiki-dark:#A5D6FF}html pre.shiki code .smky3, html code.shiki .smky3{--shiki-light:#91B859;--shiki-default:#0550AE;--shiki-dark:#79C0FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":1198,"searchDepth":1313,"depth":1313,"links":1314},2,[1315,1316,1317,1318,1319,1320],{"id":442,"depth":1313,"text":443},{"id":600,"depth":1313,"text":601},{"id":620,"depth":1313,"text":621},{"id":678,"depth":1313,"text":679},{"id":765,"depth":1313,"text":766},{"id":930,"depth":1313,"text":931,"children":1321},[1322,1324,1325,1326,1327,1328,1329,1330,1331,1332,1333,1334,1335,1336],{"id":938,"depth":1323,"text":788},3,{"id":964,"depth":1323,"text":799},{"id":994,"depth":1323,"text":809},{"id":1021,"depth":1323,"text":820},{"id":1035,"depth":1323,"text":831},{"id":1064,"depth":1323,"text":841},{"id":1084,"depth":1323,"text":851},{"id":1109,"depth":1323,"text":861},{"id":1131,"depth":1323,"text":872},{"id":1145,"depth":1323,"text":882},{"id":1156,"depth":1323,"text":892},{"id":1172,"depth":1323,"text":902},{"id":1232,"depth":1323,"text":912},{"id":1274,"depth":1323,"text":922},"Relic's metrics, traces, logs, dashboards and alerts, with a runbook for each alert.","md",null,{},true,{"title":105,"description":1337},"I2v5sshi6H4-bJKHwOWN7PHkVILh7OQD2VhNkHR5768",[1345,1347],{"title":297,"path":298,"stem":299,"description":1346,"children":-1},"Back up, restore, upgrade and troubleshoot a running Relic installation.",{"title":304,"path":305,"stem":306,"description":1348,"children":-1},"Every series Relic exports on its metrics port, with its labels.",1793857337482]