CINXE.COM
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><meta name="generator" content="Gatsby 5.14.1"/><meta data-react-helmet="true" content="text/html; charset=UTF-8" http-equiv="Content-Type"/><meta data-react-helmet="true" charSet="utf-8"/><meta data-react-helmet="true" content="width=device-width, initial-scale=1" name="viewport"/><meta data-react-helmet="true" content="ie=edge" http-equiv="x-ua-compatible"/><meta data-react-helmet="true" content="#2b5797" name="msapplication-TileColor"/><meta data-react-helmet="true" content="#ffffff" name="theme-color"/><meta data-react-helmet="true" content="@JenkinsCI" name="twitter:site"/><meta data-react-helmet="true" content="article" property="og:type"/><meta data-react-helmet="true" name="description" content="This plugin exposes the Metrics API to Jenkins plugins."/><meta data-react-helmet="true" name="image" content="https://jenkins.io/images/logo-title-opengraph.png"/><meta data-react-helmet="true" property="og:url" content="https://plugins.jenkins.io/metrics"/><meta data-react-helmet="true" property="og:site_name" content="Metrics"/><meta data-react-helmet="true" property="og:title" content="Metrics"/><meta data-react-helmet="true" property="apple-mobile-web-app-title" content="Metrics"/><meta data-react-helmet="true" property="og:description" content="This plugin exposes the Metrics API to Jenkins plugins."/><meta data-react-helmet="true" property="og:image" content="https://jenkins.io/images/logo-title-opengraph.png"/><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"/><meta data-react-helmet="true" name="twitter:creator" content="@JenkinsCI"/><meta data-react-helmet="true" name="twitter:title" content="Metrics"/><meta data-react-helmet="true" name="twitter:description" content="This plugin exposes the Metrics API to Jenkins plugins."/><meta data-react-helmet="true" name="twitter:image" content="https://jenkins.io/images/logo-title-opengraph.png"/><style data-href="/styles.80c65199d86590c1acd7.css" data-identity="gatsby-global-css">@import url(https://www.jenkins.io/assets/bower/bootstrap/css/bootstrap.min.css);@import url(https://www.jenkins.io/css/jenkins.css);@import url(https://www.jenkins.io/css/copy-to-clipboard.css);@import url(https://www.jenkins.io/stylesheets/styles.css);@import url(https://www.jenkins.io/css/footer.css);body .fixed.top{z-index:999}img{max-width:100%}body{overflow-x:hidden}body .showResults.item-finder>#plugin-search-form.HomeHeader{padding:.25rem .5rem}#plugin-search-form .SearchBox .SearchBtn,#plugin-search-form .SearchBox .ShowFilter{color:#fff!important}.SearchBox label.input-group{width:100%}.SearchBox .input-group .btn{border:1px solid #900}body .showResults.item-finder>.HomeHeader>.navbar{padding:0 10.5rem 0 0;width:100%}body .showResults.item-finder>.HomeHeader>.navbar>.nav,body .showResults.item-finder>.HomeHeader>.navbar>.nav>.SearchBox{padding:0!important;width:100%}body .showResults.item-finder>.HomeHeader>.navbar>.nav>.btn-group>button>i{line-height:1.5rem}body .showResults.item-finder>.HomeHeader>.navbar>.nav>.btn-group{position:absolute;right:0;top:0}body .showResults.item-finder>.HomeHeader>.navbar>.nav>.SearchBox .ShowFilter{max-width:10rem!important;width:18.6%!important}body .showResults.item-finder .filters{border-left:none;border-radius:0;border-top:none;box-shadow:-.25rem 0 #fff;left:.25rem;margin-top:-1px;padding-top:1rem!important;top:5px}body .showResults.item-finder .filters .row{border:none;padding:0}body .showResults.item-finder .filters .row>div{font-size:.75rem;overflow:hidden;padding:0 .5rem}body .showResults.item-finder .filters .row>div label{white-space:nowrap}body .showResults #plugin-search-form .nav>.btn-group{display:inline-block}body .showResults #plugin-search-form h1,body .showResults #plugin-search-form p,body .showResults #plugin-search-form:before{display:none}.page-link{cursor:pointer}.CategoryList,.CategoryList ul{list-style:none;margin:0;padding:0;vertical-align:middle}.CategoryList>li>label{font-weight:700}.CategoryList>li>ul{padding:0 0 1rem}.CategoryList>li{-moz-column-break-inside:avoid;break-inside:avoid-column;display:table;page-break-inside:avoid}h1 .anchor ion-icon,h2 .anchor ion-icon,h3 .anchor ion-icon,h4 .anchor ion-icon,h5 .anchor ion-icon,h6 .anchor ion-icon{visibility:hidden}h1 .anchor:focus ion-icon,h1:hover .anchor ion-icon,h2 .anchor:focus ion-icon,h2:hover .anchor ion-icon,h3 .anchor:focus ion-icon,h3:hover .anchor ion-icon,h4 .anchor:focus ion-icon,h4:hover .anchor ion-icon,h5 .anchor:focus ion-icon,h5:hover .anchor ion-icon,h6 .anchor:focus ion-icon,h6:hover .anchor ion-icon{visibility:visible}.filters .show-all{background:#168bb9;border:none;border-radius:2px;color:#fff;font-size:.67rem;font-weight:200;margin-left:.5rem;padding:.15rem .5rem}.isFiltered .filters .show-all{display:inline-block}#pluginDependencies h3{font-size:1.2rem;margin-top:.7rem}#pluginDependencies h2{margin-top:.7rem}.empty{opacity:.5}.NoLabels>.Categories label>input{display:none}.NoLabels>.Categories label>span{color:#0275d8;cursor:pointer;margin-left:0!important}h1.title{margin-right:2rem}:root{--code-background:#f6f8fa;--no-labels-background:#e5f8ff;--base-size-8:0.5rem;--base-size-16:1rem;--borderColor-default:#30363d;--borderColor-accent-emphasis:#1f6feb;--borderColor-success-emphasis:#238636;--borderColor-done-emphasis:#8957e5;--borderColor-attention-emphasis:#9e6a03;--borderColor-danger-emphasis:#da3633;--fgColor-accent:#4493f8;--fgColor-success:#3fb950;--fgColor-done:#a371f7;--fgColor-attention:#d29922;--fgColor-danger:#f85149}body #grid-box .NoLabels{background:#e5f8ff;background:var(--no-labels-background);padding:2rem 0}body #grid-box .NoLabels .CategoryList{font-size:.875rem}body #grid-box .NoLabels .CategoryList label>span{margin-left:.5rem}body #grid-box .NoLabels .Entry-box{display:block;font-size:.875rem;line-height:1rem;padding:.25rem 0}body #grid-box .NoLabels .Entry-box a{cursor:pointer}body #grid-box .NoLabels legend{font-size:1.1rem}#cb-item-finder-grid-box>.grid>.no-results{color:rgba(0,0,0,.667);display:block;padding:.5rem}.not-found-box{text-align:center}.not-found{display:inline-block;margin:6rem 0;padding:1.5rem 0 1.5rem 8rem;position:relative;text-align:left}.not-found h3{margin-bottom:.25rem}.not-found i{color:rgba(0,0,0,.25);display:block;font-size:8rem;left:0;line-height:8rem;position:absolute;top:0;vertical-align:middle}.not-found i.icon-plug{color:#000;font-size:6rem;left:.5rem;transform:scaleX(-1)}.markdown-alert{border-left:.25em solid #30363d;border-left:.25em solid var(--borderColor-default);color:inherit;margin-bottom:16px;padding:.5rem 1rem;padding:var(--base-size-8) var(--base-size-16)}.markdown-alert .markdown-alert-title{align-items:center;display:flex;font-weight:600;line-height:1}.octicon{fill:currentcolor;display:inline-block;margin-right:8px;overflow:visible!important;vertical-align:text-bottom}.markdown-alert>:first-child{margin-top:0}.markdown-alert.markdown-alert-note{border-left-color:#1f6feb;border-left-color:var(--borderColor-accent-emphasis)}.markdown-alert.markdown-alert-note .markdown-alert-title{color:#4493f8;color:var(--fgColor-accent)}.markdown-alert.markdown-alert-tip{border-left-color:#238636;border-left-color:var(--borderColor-success-emphasis)}.markdown-alert.markdown-alert-tip .markdown-alert-title{color:#3fb950;color:var(--fgColor-success)}.markdown-alert.markdown-alert-important{border-left-color:#8957e5;border-left-color:var(--borderColor-done-emphasis)}.markdown-alert.markdown-alert-important .markdown-alert-title{color:#a371f7;color:var(--fgColor-done)}.markdown-alert.markdown-alert-warning{border-left-color:#9e6a03;border-left-color:var(--borderColor-attention-emphasis)}.markdown-alert.markdown-alert-warning .markdown-alert-title{color:#d29922;color:var(--fgColor-attention)}.markdown-alert.markdown-alert-caution{border-left-color:#da3633;border-left-color:var(--borderColor-danger-emphasis)}.markdown-alert.markdown-alert-caution .markdown-alert-title{color:#f85149;color:var(--fgColor-danger)}#plugin-spinner{color:rgba(0,0,0,.33);cursor:pointer;display:block;left:0;padding:5rem 0;position:absolute;right:0;text-align:center;text-shadow:0 1px 1px #fff}#plugin-spinner>.swing{display:inline-block;padding:1rem}#plugin-spinner .icon-jenkins{display:block;font-size:10.5rem}.swing div{background:#fff;border:1px solid #69c;border-radius:50%;box-shadow:inset 0 0 1px #039,inset 0 0 0 1px #fff,0 5px 3px -2px rgba(0,0,0,.15),inset -5px -5px 7px 1px #168bb9,inset -4px -6px 10px 10px #69c;display:inline-block;height:32px;width:32px}.spinner-wrapper{margin:2rem auto auto;width:2rem}@keyframes ball-l{0%,50%{transform:rotate(0) translateX(0)}to{transform:rotate(0deg) translateX(-2.5em)}}@keyframes ball-r{0%{transform:rotate(0deg) translateX(2.5em)}50%,to{transform:rotate(0) translateX(0)}}@keyframes shadow-l-n{0%,50%{opacity:.5;transform:translateX(0)}to{opacity:.125;transform:translateX(-1.75em)}}@keyframes shadow-r-n{0%{opacity:.125;transform:translateX(1.75em)}50%,to{opacity:.5;transform:translateX(0)}}.swing-l{animation:ball-l .425s ease-in-out infinite alternate}.swing-r{animation:ball-r .425s ease-in-out infinite alternate}.maintainers>.maintainer{display:block}#pluginPage #grid-box .sidebar>.btn{display:block;margin-bottom:1rem;padding:.5rem 1rem .75rem 3.5rem;position:relative;text-align:left}#pluginPage #grid-box .sidebar>.btn i{font-size:2.25rem;left:.75rem;position:absolute;top:.5rem}#pluginPage #grid-box .sidebar>.btn>span{font-size:1.1rem;font-weight:500;line-height:1.3rem}#pluginPage #grid-box .sidebar>.btn>.v{display:block;font-size:.75rem;font-weight:200;white-space:normal}#pluginPage #grid-box .sidebar .lbl{display:inline-block;margin-right:.5rem}##pluginPage #grid-box .sidebar .label-link a{display:block;line-height:1.5rem;padding:4px 0}#pluginPage #grid-box .sidebar .chart{margin:1rem 0 0}.sidebar .sidebarSection{border-top:1px solid #aaa;margin-top:1rem;padding-top:.5rem}#pluginPage #grid-box{font-size:.875rem;margin-left:15px;margin-right:15px}#pluginPage #grid-box .download{margin:2rem 0 2rem -.5rem}#pluginPage #grid-box .alert>.alert-icon{background-position:top;background-repeat:no-repeat;background-size:3rem;display:inline-block;height:3rem;left:1rem;opacity:.54;position:absolute;top:calc(50% - 1.5rem);width:3rem}#grid-box .pluginContainer{margin:auto;max-width:72rem}.alert-warning .alert-icon .main-path{fill:#856404}.alert-danger .alert-icon .main-path{fill:#721c24}#pluginPage #grid-box .alert-with-icon{min-height:4rem;padding-left:5rem}#pluginPage #grid-box .security-warning-list{list-style:none;padding-left:0}#pluginPage #grid-box .active-warning{font-size:1rem;font-weight:bolder;margin-bottom:0}.row.flex{display:flex}.title-wrapper{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;margin:1rem auto 0;max-width:72rem;padding-left:15px;padding-right:15px}.plugin-id{margin-bottom:.5rem;opacity:.7}.content h1{font-size:2rem;margin:1.5rem 0 1rem}.content h2{font-size:1.5rem;margin-top:1.5rem}.content h3{font-size:1.25rem}.content h4{font-size:1.1rem}.filters .mask li>label{opacity:.5;position:relative}.filters .mask li>label:hover{color:#168bb9;opacity:1}.filters .mask li>label:before{background:#168bb9;content:"";display:block;font-size:0;height:.5rem;margin:.25rem .4rem;position:absolute;width:.5rem}.filters .mask li input[type=checkbox]{visibility:hidden}.filters label{cursor:pointer}.filterOptions{display:none}body .item-finder.Tiles .Entry-box{display:inline-block}.categories-box .list-group{box-shadow:0 3px 2px -1px rgba(0,0,0,.1);margin-top:-2.75rem;position:relative;z-index:2}.categories-box .list-group>.label{background:rgba(0,0,0,.5);border:none;border-radius:0;border-top-right-radius:10px;display:block}.categories-box .list-group>.label>.list-group-item{background:none;border:none;color:#fff;font-size:1rem;text-align:left}button.nav-link{background:#f9f9f9;border:1px solid #ccc;border-radius:3px;box-shadow:0 2px 4px -3px rgba(0,0,0,.25)}button.nav-link b{color:#666}.form-inline>.form-control.nav-link{background:#f9f9f9;border:1px solid #ccc;border-radius:3px;box-shadow:inset 0 2px 4px -2px rgba(0,0,0,.25);margin:0;padding:.25rem;width:11rem}.Tile,body .item-finder.Tiles a.item{background:#fff;border:.1rem solid #ccc;border-radius:3px;box-sizing:border-box;color:#666;display:block;font-size:.875rem;height:16.5rem;margin:.25rem;opacity:.9;padding:.67rem;-webkit-text-decoration:none!important;text-decoration:none!important;width:13rem}body .item-finder.Tiles .grid-box>div{padding:.5rem 0 2rem .5rem;text-align:left}body .item-finder.List a.item>div,body .item-finder.Tiles a.item>div{display:block;left:auto;position:relative;top:auto;width:auto}.Tile:hover,body .item-finder.Tiles a.item:hover{border:.1rem solid #999;box-shadow:0 2px 3px rgba(0,0,0,.25);opacity:1;-webkit-text-decoration:none;text-decoration:none}.Tile:hover h4,body .item-finder.Tiles a.item .Title:hover h4{color:#069}.Tile .Icon,body .item-finder.Tiles a.item .Icon{bottom:0;display:block;opacity:.75;position:absolute;right:.75rem}body .item-finder.Tiles a.item:hover .Icon{opacity:1}.Tile .Icon>i,body .item-finder.List a.item .Icon>i,body .item-finder.Tiles a.item .Icon>i{border-radius:3px;color:#fff;display:inline-block;font-size:1.33rem;font-style:normal;height:3rem;line-height:3rem;margin:-1px 0 0 -1px;text-shadow:rgba(0,0,0,.5) 1px 2px 1px;width:3rem}body .item-finder.Tiles a.item .Icon>i{margin-bottom:1rem}.Tile .Score,body .item-finder a.item .Score{margin:0 0 .67rem}.Tile .Score>.scr_4:after,body .item-finder a.item .Score>.scr_4:after{content:"\2605 \2605 \2605 \2605 \2606";display:block;text-align:center}.Tile .Downloads,body .item-finder a.item .Downloads{color:#999;font-size:.75rem;margin:0}.Tile .Labels,body .item-finder.Tiles a.item .Labels{line-height:.75rem;margin:.25rem 0;max-height:2rem;min-height:1rem;overflow:hidden}.Tile .Version span,body .item-finder.Tiles a.item .Version span{margin-right:.25rem}.Tile .Version span.v,body .item-finder.Tiles a.item .Version span.v{display:none;margin-right:1rem}.Tile .Version span.c:after,body .item-finder.Tiles a.item .Version span.c:after{content:"+"}body div .item-finder a.item>.Wiki{display:none}.Tile .Excerpt,body .item-finder.Tiles a.item .Excerpt{height:4.4rem;line-height:1.1rem;margin:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:normal}body .item-finder a.item .Excerpt a{color:#666;-webkit-text-decoration:none;text-decoration:none}.Tile .Excerpt div,.Tile .Excerpt p,body .item-finder.Tiles a.item .Excerpt div,body .item-finder.Tiles a.item .Excerpt p{display:inline}.Tile .Excerpt:after,.Tile h4:after,body .item-finder.Tiles a.item .Excerpt:after,body .item-finder.Tiles a.item h4:after{bottom:0;box-shadow:inset -250px 0 250px -200px #fff;content:" ";display:block;height:19px;height:1.1rem;position:absolute;right:0;width:100%}.Tile h4,body .item-finder a.item h4{color:#000;font-size:1rem;font-weight:400;line-height:1.1rem;margin:0 0 .25rem;max-height:2.2rem;overflow:hidden;position:relative}body .item-finder.Tiles a.item h4{min-height:2.2rem}.Tile .Authors>div,body .item-finder.List a.item .Authors>div,body .item-finder.List a.item .Labels>span,body .item-finder.List a.item .Version,body .item-finder.Tiles a.item .Authors>div,body .item-finder.Tiles a.item .Labels>span,body .item-finder.Tiles a.item .Version{color:var(--link-color);font-size:.75rem;line-height:1rem;margin-right:.5rem}body .item-finder.Tiles a.item .Authors{bottom:1rem;max-width:8rem;overflow:hidden;position:absolute;white-space:nowrap}.VirtualScroll>div>div{display:inline-block;height:auto!important;padding:.25rem;position:static!important;text-align:left;vertical-align:top;width:auto!important}.VirtualScroll>div>div.spinner{height:40px!important;margin:100px auto!important;overflow:hidden;position:relative!important;text-indent:999rem;white-space:nowrap;width:40px!important}.spinner .double-bounce2{animation:sk-bounce 2s ease-in-out infinite;background-color:rgba(0,0,0,.2);border-radius:50%;height:100%;left:0;opacity:.6;position:absolute;top:0;width:100%}.double-bounce2{animation-delay:-1s}@keyframes sk-bounce{0%,to{transform:scale(0)}50%{transform:scale(1)}}.tbody{display:table}.tbody>.thead{display:table-header-group}.tbody>.thead>.tr{display:table-row}.tbody>.thead>.tr>div{border-bottom:1px solid #ccc;display:table-cell;padding:.25rem}.tbody>.Row,body .item-finder.Table .Entry-box{display:table-row-group}.tbody>.Row>.Tile,body .item-finder.Table a.Entrty{display:table-row;height:auto;margin:0;padding:0;width:auto}.tbody>.Row>.Tile>div,body .item-finder.Table a.Entry>div{border-bottom:1px solid #eee;display:table-cell;height:auto;max-height:3.3rem;padding:.25rem}body .item-finder.Table a.Entry>div.Score{font-size:.875rem;margin:0;position:static}body .item-finder.Table a.Entry>div.Wiki{display:none}.tbody>.Row>.Tile>div.Title,body .item-finder.Table a.Entry>div.Title{width:20%}body .item-finder.Table a.Entry>div.Title>h4{color:#369;font-size:.875rem;font-weight:700}.tbody>.Row>.Tile>div.Icon,body .item-finder.Table a.Entry>div.Icon{display:none}.tbody>.Row>.Tile>div.Authors>div,body .item-finder.Table a.Entry>div.Authors>div{white-space:nowrap}.list>.list>.thead{display:none}.list>.item>.Tile,body .item-finder.List a.Entry{display:block;height:auto;padding:.5rem .5rem .5rem 6rem;position:relative;text-align:left;width:auto}.list>.item>.Tile>.Icon,.list>.item>.Tile>.Score,body .item-finder.List a.Entry .Icon,body .item-finder.List a.Entry .Score{left:.5rem;position:absolute;width:5rem}.list>.item>.Tile>.Score,body .item-finder.List a.Entry .Score{top:4rem}.list>.item>.Tile>.Excerpt,body .item-finder.List a.Entry .Excerpt{height:auto;margin:.5rem 0;max-height:3.3rem}.list>.item>.Tile>.Authors,body .item-finder.List a.Entry .Authors{margin:0}.list>.item>.Tile>.Authors>div,body .item-finder.List a.Entry .Authors>div{display:inline-block}.overview{padding-top:1.5rem}.overview p{font-size:1.1rem}body .btn-primary{background:#d24939;border-color:#900;color:#fff}body .btn-primary:hover{background:#335061;border-color:#88c5cc}nav .nav-item.active{box-shadow:inset 0 -2px #d33833}#cb-grid-toolbar .navbar-nav .nav-item{margin-left:.5rem}#cb-grid-toolbar .navbar-nav .nav-link{padding:.33rem}#cb-grid-toolbar .nav-link.dropdown-toggle{padding:.25rem .5rem}.categories-box .filter-keys.dropdown-menu{background:#f9f9f9;border-color:#ccc;border-radius:0;display:block;float:none;margin:-1px 0 0;max-width:9999rem;padding:0;position:static;width:auto}.categories-box .filter-keys.dropdown-menu a{color:#999;display:block;font-size:.875rem;padding:1px 2px;position:relative;width:auto}.categories-box .filter-keys.dropdown-menu a:hover{box-shadow:inset 0 100px rgba(0,0,0,.06)}.categories-box .filter-keys.dropdown-menu a:nth-child(odd){background:#eee}.categories-box .filter-keys.dropdown-menu a span{color:#369;display:inline-block;padding:.25rem 0 .25rem 2.25rem}.categories-box .filter-keys.dropdown-menu a .count{padding:.25rem .75rem;position:absolute;right:0;text-align:right;width:5rem}body .list-group>li>a.active,body .list-group>li>a.active:active,body .list-group>li>a.active:hover{background:#fff!important;box-shadow:inset 0 99rem rgba(200,240,255,.67);color:#000!important}#download-menu>.dropdown-menu{padding:2rem;width:50rem}nav .form-inline .input-group>.form-control{border-color:#900;transition:all .5s ease}form.showFilter nav .form-inline .ShowFilter{background:#900}nav .form-inline .input-group>.form-control:focus{border-color:red}form.search{float:right;opacity:.9}nav form.search .input-group:focus>input.form-control,nav form.search .input-group:hover>input.form-control,nav form.search .input-group>input.form-control:focus{opacity:1;width:12rem}.cardGroup{display:flex;overflow:hidden}.cardGroup__card{border:none;border-radius:0;flex:1 1 0%}a.card:hover{background-color:#eef3f5}.cardGroup__card+.cardGroup__card{border-left:1px solid #d7dbdd}.cardGroup__cardDescription{flex:1 1 auto}.card{border:1px solid #cad0d2;border-radius:4px;overflow:hidden}.card,.card__description{display:flex;flex-direction:column}.card__description{align-items:center;justify-content:center;padding:15px 0}.svg-icon{fill:#168bb9}.header .svg-icon{fill:#fff}.card__descriptionIcon{font-size:32px;margin-bottom:10px}.card__descriptionText{color:#57727c;font-size:18px;max-width:calc(100% - 30px);text-align:center}.card--fixedWidth{max-width:120px}.featureListItem{align-items:center;display:flex;padding:10px}.featureListItem+.featureListItem{border-top:1px solid #d7dbdd}.featureListItem--reverse{flex-direction:row-reverse}.featureListItem__description,.featureListItem__icon{padding:5px 15px}.featureListItem__icon{font-size:50px;line-height:0}.featureListItem__description{color:#000;width:100%}.formFooter{display:flex;overflow:hidden;width:100%}.formFooter__section{flex:1 1 100%}.formFooter__item+.formFooter__item{margin-left:5px}.underline{border-bottom:1px solid #cad0d2;border-radius:4px}#pluginPage #grid-box .content .main table{border:1px solid silver}#pluginPage #grid-box .content .main td{padding:1em}#grid-box .content{padding-top:1rem;word-break:break-word}#grid-box .content table{word-break:normal}.code-wrapper pre,.markdown-body pre{background-color:#f6f8fa;background-color:var(--code-background);border-radius:4px;padding:16px}.markdown-body clipboard-copy{display:none}@media (min-width:576px){.modal-dialog.wide{margin:.5rem auto;max-width:none}}@media (min-width:776px){.modal-dialog.wide{max-width:700px}}@media (prefers-color-scheme:dark){body{--no-labels-background:#212529;--code-background:#111;--search-background:#313539;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222,226,230,.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222,226,230,.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:hsla(0,0%,100%,.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}.btn-close{filter:var(--bs-btn-close-white-filter)}}@font-face{font-family:ji;font-style:normal;font-weight:400;src:url(/static/ji-06ec8f35b7fcf628bc6eadd35a1af855.ttf) format("truetype"),url(/static/ji-d09d228cf69136a06df3444806157d4d.woff) format("woff"),url(/static/ji-351ec2c6ddd54431698e9cdfbc45c4bf.svg#ji) format("svg")}@font-face{font-family:icomoon;font-style:normal;font-weight:400;src:url(/static/icomoon-067def7ea015b2fb62e5bc963c5eec42.eot);src:url(/static/icomoon-067def7ea015b2fb62e5bc963c5eec42.eot#iefix) format("embedded-opentype"),url(/static/icomoon-3539e0715542420d24bb9fd27f21d3f8.ttf) format("truetype"),url(/static/icomoon-341ea04290ca1f972b7316b4fecd09b9.woff) format("woff"),url(/static/icomoon-3456ed3433d20110c82d649f1f0c6fb6.svg#icomoon) format("svg")}[class*=" icon-"],[class^=icon-]{speak:none;font-feature-settings:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:ji,sans-serif!important;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none}.icon-jira:before{content:"\e677"}.icon-hipchat:before{content:"\e67e"}.icon-AWS_Elastic_BeanStalk:before{content:"\e67b"}.icon-mercurial:before{content:"\e673"}.icon-bitbucket:before{content:"\e67f"}.icon-git-logo:before{content:"\e674"}.icon-github:before{content:"\e675"}.icon-subversion:before{content:"\e676"}.icon-pivotal:before{content:"\e660"}.icon-vmware:before{content:"\e65e"}.icon-ec2:before{content:"\e65f"}.icon-siren:before{content:"\e656"}.icon-cloudbees-logo:before{content:"\e64a"}.icon-code:before{content:"\e647"}.icon-docker:before{content:"\e640"}.icon-fingerprint:before{content:"\e63a"}.icon-groovy:before{content:"\e638"}.icon-grails:before{content:"\e637"}.icon-git:before{content:"\e635"}.icon-sbt:before{content:"\e636"}.icon-gradle:before{content:"\e634"}.icon-ant:before{content:"\e632"}.icon-service:before{content:"\e62a"}.icon-service-o:before{content:"\e62b"}.icon-menu:before{content:"\e620"}.icon-build-hand:before{content:"\e61b"}.icon-featured_play_list:before{content:"\e90e"}.icon-menu2:before{content:"\e66b"}.icon-content-paste:before{content:"\e666"}.icon-format-color-fill:before{content:"\e658"}.icon-puzzle:before{content:"\e64f"}.icon-lightbulb:before{content:"\e901"}.icon-flow-merge:before{content:"\e671"}.icon-flow-switch:before{content:"\e672"}.icon-thermometer:before{content:"\e659"}.icon-arrow-shuffle:before{content:"\e630"}.icon-arrow-right:before{content:"\e631"}.icon-chat-3:before{content:"\e680"}.icon-health:before{content:"\e657"}.icon-grid:before,.icon-icons:before{content:"\e90f"}.icon-book2:before{content:"\e909"}.icon-screwdriver:before{content:"\e668"}.icon-clipboard:before{content:"\e667"}.icon-calendar:before{content:"\e663"}.icon-maven:before{content:"\e633"}.icon-brick-menu-o:before{content:"\e62c"}.icon-brick-o:before{content:"\e62d"}.icon-gear-menu-o:before{content:"\e627"}.icon-gear-menu:before{content:"\e626"}.icon-brick-menu:before{content:"\e621"}.icon-folder-menu:before{content:"\e622"}.icon-jenkins-alt:before{content:"\e617"}.icon-jenkins:before{content:"\e618"}.icon-jenkins-o:before{content:"\e619"}.icon-brick:before{content:"\e61a"}.icon-checkbox-checked:before{content:"\e623"}.icon-bulb:before{content:"\e900"}.icon-phone:before{content:"\e642"}.icon-checkmark:before{content:"\e681"}.icon-map-pin-fill:before{content:"\e678"}.icon-box-add:before{content:"\e67d"}.icon-box-remove:before{content:"\e67c"}.icon-clock:before{content:"\e661"}.icon-plug:before{content:"\e64e"}.icon-refresh:before{content:"\e679"}.icon-search:before{content:"\e63f"}.icon-move:before{content:"\e615"}.icon-bug:before{content:"\e611"}.icon-tools:before{content:"\e669"}.icon-pulse:before{content:"\e655"}.icon-key:before{content:"\e653"}.icon-lock:before{content:"\e64b"}.icon-gear:before{content:"\e624"}.icon-repo-forked:before{content:"\e610"}.icon-issue-closed:before{content:"\e608"}.icon-lightning:before{content:"\e603"}.icon-rainy:before{content:"\e604"}.icon-cloud:before{content:"\e605"}.icon-cloudy:before{content:"\e606"}.icon-sun:before{content:"\e607"}.icon-office:before{content:"\e600"}.icon-pencil:before{content:"\e905"}.icon-quill:before{content:"\e62e"}.icon-book:before{content:"\e63c"}.icon-copy:before{content:"\e66e"}.icon-copy2:before{content:"\e66f"}.icon-tag:before{content:"\e61c"}.icon-support:before{content:"\e66c"}.icon-phone2:before{content:"\e66d"}.icon-map:before{content:"\e651"}.icon-stopwatch:before{content:"\e648"}.icon-mobile:before{content:"\e643"}.icon-users:before{content:"\e641"}.icon-wrench:before{content:"\e66a"}.icon-settings:before{content:"\e614"}.icon-hammer:before{content:"\e601"}.icon-aid:before{content:"\e654"}.icon-pie:before{content:"\e65b"}.icon-stats:before{content:"\e639"}.icon-bars:before{content:"\e65c"}.icon-rocket:before{content:"\e649"}.icon-remove:before{content:"\e664"}.icon-signup:before{content:"\e682"}.icon-list:before{content:"\e910"}.icon-download:before{content:"\e670"}.icon-globe:before{content:"\e652"}.icon-flag:before{content:"\e644"}.icon-bookmark:before{content:"\e906"}.icon-star:before{content:"\e907"}.icon-star2:before{content:"\e908"}.icon-cancel-circle:before{content:"\e665"}.icon-loop:before{content:"\e65d"}.icon-table:before{content:"\e911"}.icon-insert-template:before{content:"\e64d"}.icon-console:before{content:"\e628"}.icon-facebook:before{content:"\e902"}.icon-facebook2:before{content:"\e903"}.icon-twitter:before{content:"\e904"}.icon-file-css:before{content:"\e629"}.icon-grid-alt:before{content:"\e912"}.icon-menu3:before{content:"\e913"}.icon-list2:before{content:"\e914"}.icon-screen:before{content:"\e60b"}.icon--:before{content:"\e90a"}.icon-help:before{content:"\e67a"}.icon-feather-o:before{content:"\e62f"}.icon-compass:before{content:"\e61d"}.icon-graduation:before{content:"\e65a"}.icon-box:before{content:"\e63b"}.icon-logout:before{content:"\e90b"}.icon-flow-cascade:before{content:"\e61e"}.icon-flow-branch:before{content:"\e60c"}.icon-flow-tree:before{content:"\e60d"}.icon-list-ul:before{content:"\e915"}.icon-stethoscope:before{content:"\e90d"}.icon-code-fork:before{content:"\e90c"}.icon-calendar-o:before{content:"\e662"}.icon-ban:before{content:"\e64c"}.icon-flag-checkered:before{content:"\e645"}.icon-envelope-o:before{content:"\e63d"}.icon-envelope:before{content:"\e63e"}.icon-cog:before{content:"\e625"}.icon-puzzle-piece:before{content:"\e61f"}.icon-folder-open-o:before{content:"\e60e"}.icon-folder-o:before{content:"\e60f"}.icon-thumbs-o-down:before{content:"\e609"}.icon-thumbs-o-up:before{content:"\e60a"}.icon-enlarge:before{content:"\e650"}.icon-shield:before{content:"\e646"}.icon-factory:before{content:"\e616"}.icon-unlocked:before{content:"\e612"}.icon-locked:before{content:"\e613"}.icon-uniE602:before{content:"\e602"} /*! * GitHub Light v0.5.0 * Copyright (c) 2012 - 2017 GitHub, Inc. * Licensed under MIT (https://github.com/primer/github-syntax-theme-generator/blob/master/LICENSE) */.pl-c{color:#6a737d}.pl-c1,.pl-s .pl-v{color:#005cc5}.pl-e,.pl-en{color:#6f42c1}.pl-s .pl-s1,.pl-smi{color:#24292e}.pl-ent{color:#22863a}.pl-k{color:#d73a49}.pl-pds,.pl-s,.pl-s .pl-pse .pl-s1,.pl-sr,.pl-sr .pl-cce,.pl-sr .pl-sra,.pl-sr .pl-sre{color:#032f62}.pl-smw,.pl-v{color:#e36209}.pl-bu{color:#b31d28}.pl-ii{background-color:#b31d28;color:#fafbfc}.pl-c2{background-color:#d73a49;color:#fafbfc}.pl-c2:before{content:"^M"}.pl-sr .pl-cce{color:#22863a;font-weight:700}.pl-ml{color:#735c0f}.pl-mh,.pl-mh .pl-en,.pl-ms{color:#005cc5;font-weight:700}.pl-mi{color:#24292e;font-style:italic}.pl-mb{color:#24292e;font-weight:700}.pl-md{background-color:#ffeef0;color:#b31d28}.pl-mi1{background-color:#f0fff4;color:#22863a}.pl-mc{background-color:#ffebda;color:#e36209}.pl-mi2{background-color:#005cc5;color:#f6f8fa}.pl-mdr{color:#6f42c1;font-weight:700}.pl-ba{color:#586069}.pl-sg{color:#959da5}.pl-corl{color:#032f62;-webkit-text-decoration:underline;text-decoration:underline}@media (prefers-color-scheme:dark){.pl-c{color:#959da5}/*! * GitHub Dark v0.5.0 * Copyright (c) 2012 - 2017 GitHub, Inc. * Licensed under MIT (https://github.com/primer/github-syntax-theme-generator/blob/master/LICENSE) */.pl-c1,.pl-s .pl-v{color:#c8e1ff}.pl-e,.pl-en{color:#b392f0}.pl-s .pl-s1,.pl-smi{color:#f6f8fa}.pl-ent{color:#7bcc72}.pl-k{color:#ea4a5a}.pl-pds,.pl-s,.pl-s .pl-pse .pl-s1,.pl-sr,.pl-sr .pl-cce,.pl-sr .pl-sra,.pl-sr .pl-sre{color:#79b8ff}.pl-ml,.pl-v{color:#fb8532}.pl-bu{color:#d73a49}.pl-c2,.pl-ii{background-color:#d73a49;color:#fafbfc}.pl-c2:before{content:"^M"}.pl-sr .pl-cce{color:#7bcc72;font-weight:700}.pl-mh,.pl-mh .pl-en,.pl-ms{color:#0366d6;font-weight:700}.pl-mi{color:#f6f8fa;font-style:italic}.pl-mb{color:#f6f8fa;font-weight:700}.pl-md{background-color:#ffeef0;color:#b31d28}.pl-mi1{background-color:#f0fff4;color:#176f2c}.pl-mc{background-color:#fffdef;color:#b08800}.pl-mi2{background-color:#959da5;color:#2f363d}.pl-mdr{color:#b392f0;font-weight:700}.pl-mo{color:#0366d6}.pl-ba{color:#ffeef0}.pl-sg{color:#6a737d}.pl-corl{color:#79b8ff;-webkit-text-decoration:underline;text-decoration:underline}}.InstallViaCLI-module--root--e7571{line-height:2rem;position:relative}.InstallViaCLI-module--root--e7571 span{margin-right:5px}.InstallViaCLI-module--root--e7571 code{display:block;margin-right:3rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ClipboardButton-module--copy-wrapper--e75f0{bottom:0;min-height:2rem;position:absolute;right:0}.ClipboardButton-module--copy-wrapper--e75f0 img{opacity:.87}.ClipboardButton-module--copy-success--e2048{line-height:1rem;position:absolute;right:4rem;white-space:nowrap}@media (prefers-color-scheme:dark){.ClipboardButton-module--copy-wrapper--e75f0 img{filter:invert(1)}}.PluginWikiContent-module--lightbox--13a29{align-items:center;background-color:rgba(0,0,0,.5);display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:9999}.PluginWikiContent-module--lightbox--13a29 img{box-shadow:0 0 20px rgba(0,0,0,.5);max-height:90%;max-width:90%}.PluginWikiContent-module--lightbox--13a29 img:hover{cursor:pointer}.pluginHealth>div:last-child{margin-bottom:2rem}#pluginHealth--score{align-items:center;display:flex;justify-content:space-evenly;line-height:1;padding:20px 0 30px}#pluginHealth--score #pluginHealth--score-value{font-size:64px}#pluginHealth--score #pluginHealth--score-unit{font-size:24px}#pluginHealth--score #pluginHealth--score-label{font-size:14px;text-align:center;text-transform:uppercase}.pluginHealth--score-section{border-top:1px solid silver;padding:13px 0}.pluginHealth--score-section:last-of-type{border-bottom:1px solid silver;margin-bottom:2rem}.pluginHealth--score-section--collapsible-icon{display:flex;justify-content:flex-end;width:24px}.pluginHealth--score-section--collapsible-icon ion-icon{width:14px}.pluginHealth--score-section--header{align-items:center;cursor:pointer;display:flex;font-size:1.5rem;height:3rem;line-height:3rem;margin-top:.5rem}.pluginHealth--score-section--header--icon{align-items:center;display:flex;width:24px}.pluginHealth-score-icon--incorrect{color:#e6001f}.pluginHealth-score-icon--correct{color:#1ea64b}.pluginHealth--score-section--header-title{flex-grow:1;font-size:2rem;font-weight:400}.pluginHealth--score-section--header-score{font-size:1.5rem;font-weight:400}.pluginHealth--score-section--header-icon{width:40px}.pluginHealth-score-components--list{padding-left:40px;padding-right:24px}.pluginHealth-score-components--list.collapse{visibility:collapse}.pluginHealth--score-component{align-items:flex-start;display:flex;line-height:1.75;margin:14px 0 16px}.pluginHealth--score-component--icon{line-height:1;margin-right:6px}.pluginHealth--score-component--reasons{align-items:flex-start;display:flex;flex-direction:column;flex-grow:1}.pluginHealth--score-component--reasons span{line-height:1}#pluginReleases--container{margin-top:10px}#pluginReleases--container .item{margin-bottom:10px}#pluginReleases--container .card-text h2{font-size:1.4rem}#pluginReleases--container .card-text h3{font-size:1.2rem}#pluginReleases--container .card-text h4{font-size:1.1rem}#pluginReleases--container .card-text h5{font-size:1rem}#pluginReleases--container .github-icon{margin-left:7px}:root{--plugin-icon-width:2.25em;--plugin-padding:0.25em;--search-background:#eae9e8}#searchpage #grid-box{background:#eae9e8;background:var(--search-background)}.SearchResults--GridBox{display:flex;flex-flow:row wrap;justify-content:center;margin:0 2rem}.SearchResults--ItemBox{background:var(--background);border:.1rem solid #ccc;border-radius:3px;box-sizing:border-box;color:var(--bs-secondary);display:block;flex:0 0 auto;font-size:.85rem;height:19.5rem;margin:.25rem;min-height:6rem;opacity:.9;padding:.67rem;position:relative;text-align:left;-webkit-text-decoration:none!important;text-decoration:none!important;width:13rem}@media (max-width:768px){.SearchResults--ItemBox{width:calc(100% - .4rem)}}.SearchResults--ItemBox:hover{border:.1rem solid #999;box-shadow:0 2px 3px rgba(0,0,0,.25);cursor:pointer;opacity:1;-webkit-text-decoration:none;text-decoration:none}.Plugin--PluginContainer{display:block;height:100%;position:relative}.Plugin--PluginContainer *{color:var(--color)}.Plugin--PluginContainer a,.Plugin--PluginContainer a:visited{color:var(--link-color)}.Plugin--PluginContainer:hover{-webkit-text-decoration:none;text-decoration:none}.Plugin--IconContainer{bottom:3rem;display:block;grid-area:icon;opacity:.75;position:absolute;right:.25rem;z-index:9}.Plugin--IconContainer i{border-radius:3px;color:#fff;display:inline-block;font-size:1.33rem;font-style:normal;height:3rem;line-height:3rem;margin:-1px 0 0 -1px;text-align:center;text-shadow:rgba(0,0,0,.5) 1px 2px 1px;width:2.25em;width:var(--plugin-icon-width)}.Plugin--IconContainer i *{color:inherit}.Plugin--TitleContainer{grid-area:title}.Plugin--TitleContainer h4{color:var(--color);font-size:1rem;font-weight:400;line-height:1.1rem;margin:0 0 .25rem;max-height:2.2rem;overflow:hidden;position:relative}.Plugin--InstallsContainer{color:#999;font-size:.75rem;grid-area:installs;margin:0;padding:0}.Plugin--VersionContainer{color:var(--link-color);font-size:.75rem;grid-area:version;line-height:1rem;margin-right:.5rem;white-space:nowrap}.Plugin--VersionContainer span{margin-right:.25rem}.Plugin--LabelsContainer{grid-area:labels;line-height:.75rem;margin:.25rem 0;max-height:2rem;min-height:1rem;overflow:hidden}.Plugin--LabelsContainer div{color:var(--link-color);display:inline;font-size:.75rem;line-height:1rem;margin-right:.25rem}.Plugin--LabelsContainer div:after{content:", "}.Plugin--LabelsContainer div:last-child:after{content:""}.Plugin--LabelsContainer .label-link{white-space:nowrap}.Plugin--ExcerptContainer{word-wrap:break-word;grid-area:excerpt;height:4.4rem;line-height:1.1rem;margin:0;max-height:4.4rem;min-height:.5rem;overflow:hidden;padding:0;position:relative;text-overflow:ellipsis;white-space:normal}.Plugin--AuthorsContainer{bottom:3rem;grid-area:authors;max-width:8rem;overflow:hidden;position:absolute;white-space:nowrap}.Plugin--AuthorsContainer div{font-size:.75rem;line-height:1rem;margin-right:.5rem}.Plugin--HealthScoreContainer{bottom:0;position:absolute;width:100%}.Plugin--HealthScoreContainer div{display:flex;font-size:1rem;font-weight:700;justify-content:space-between;row-gap:.5rem}.SearchResults--List .SearchResults--ItemBox{height:auto;min-height:0;min-height:auto;width:calc(100% - 1rem)}.SearchResults--List .Plugin--IconContainer{bottom:auto;left:.25em;left:var(--plugin-padding);right:auto;top:.25em;top:var(--plugin-padding)}.SearchResults--List .Plugin--PluginContainer{padding-left:5em;padding-left:calc(var(--plugin-padding) + var(--plugin-icon-width)*2 + var(--plugin-padding));position:relative}.SearchResults--List .Plugin--PluginContainer .Plugin--AuthorsContainer{position:static}.SearchResults--List .Plugin--ExcerptContainer{height:auto;margin-bottom:1rem}.SearchResults--List .Plugin--HealthScoreContainer{margin-top:10px;position:static}.Pagination--Container{align-items:center;display:flex;flex-flow:column wrap;justify-content:center;margin-top:1rem}.SearchResultsCount{text-align:center}.SearchBox--Container .form-group{width:100%}.add-m{margin-left:8rem}@media only screen and (max-width:768px){.add-m{margin-left:1rem;margin-right:1rem}}.IndexPage--Container{align-items:start;background:#168bb9;border-radius:0;color:#fff;display:grid;grid-template-areas:"logo content";justify-content:center;justify-items:center;margin:0;min-height:350px;place-items:start center;text-align:center;transition:all .5s ease-in}.IndexPage--Container .logo{display:inline-block;grid-area:logo;height:294px;width:271px}.IndexPage--Container .content{grid-area:content;max-width:1024px}@media (max-width:992px){.IndexPage--Container{grid-template-areas:"logo" "content"}}.IndexPage--Container p{box-sizing:content-box;font-size:1.1rem;margin:1rem;text-align:center}.IndexPage--Container h1{font-feature-settings:normal;font-family:Georgia,Times,Times New Roman,serif;font-size:64px;font-style:normal;font-variant:normal;font-weight:700;line-height:70px}.IndexPage--Container fieldset{display:block;margin:1em 10%;text-align:center}.IndexPage--Container .input-group>.form-control{max-width:75%}.thank-you-note-container{padding:40px 16px}.thank-you-note-container,.thank-you-note-contents{align-items:center;display:flex;justify-content:center}.thank-you-note-contents{background-color:hsla(33,21%,82%,.3);border-radius:40px;height:-moz-fit-content;height:fit-content;max-width:-moz-fit-content;max-width:fit-content;padding:24px}@media (max-width:768px){.thank-you-note-contents{padding:16px}}.thank-you-note-card{align-items:center;display:flex;flex-direction:row;gap:24px;justify-content:center}@media (max-width:768px){.thank-you-note-card{gap:8px}}.thank-you-note-img-container{align-items:center;display:flex;justify-content:center}.thank-you-note-img{margin-bottom:auto;margin-top:auto}.thank-you-note-text{font-size:medium}@media (max-width:768px){.thank-you-note-text{font-size:small}}.Filters--Container{background:var(--background);border:1px solid rgba(0,0,0,.2);border-radius:3px;box-shadow:0 1px .5rem rgba(0,0,0,.15);font-size:.85rem;font-weight:200;padding:0 1rem 1.5rem;position:relative;text-align:left}.Filters--Container fieldset{margin-bottom:1rem}.Filters--Container legend{font-size:1rem}.Filters--Container label{display:block;float:none}.Filters--Container li>label>input,.Filters--Container li>label>span{display:inline-block;margin-left:.25rem}.Filters--Container .headerContainer{border-top:1px solid rgba(0,0,0,.1);padding:1rem}.ActiveFilters--FilterBox{text-align:center;white-space:nowrap;width:100%}.ActiveFilters--FilterBox div{display:inline-block;margin-right:.5rem;padding-right:.5rem;white-space:nowrap}.ActiveFilters--FilterBox .nav-link{cursor:pointer;display:inline-block;margin:0 .5rem 0 0}.ActiveFilters--FilterBox .nav-link:before{border:1px solid #ccc;border-radius:2;content:"x ";display:inline-block;font-size:.75rem;line-height:1em;margin:-.133rem .25rem 0 -.75rem;padding:0 0 .1rem;text-align:center;vertical-align:middle;width:1.3em}.SearchByAlgolia-module--root--26db9{padding-left:1em}</style><style type="text/css"> .anchor.before { position: absolute; top: 0; left: 0; transform: translateX(-100%); padding-right: 4px; } .anchor.after { display: inline-block; padding-left: 4px; } h1 .anchor svg, h2 .anchor svg, h3 .anchor svg, h4 .anchor svg, h5 .anchor svg, h6 .anchor svg { visibility: hidden; } h1:hover .anchor svg, h2:hover .anchor svg, h3:hover .anchor svg, h4:hover .anchor svg, h5:hover .anchor svg, h6:hover .anchor svg, h1 .anchor:focus svg, h2 .anchor:focus svg, h3 .anchor:focus svg, h4 .anchor:focus svg, h5 .anchor:focus svg, h6 .anchor:focus svg { visibility: visible; } </style><script> document.addEventListener("DOMContentLoaded", function(event) { var hash = window.decodeURI(location.hash.replace('#', '')) if (hash !== '') { var element = document.getElementById(hash) if (element) { var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop var clientTop = document.documentElement.clientTop || document.body.clientTop || 0 var offset = element.getBoundingClientRect().top + scrollTop - clientTop // Wait for the browser to finish rendering before scrolling. setTimeout((function() { window.scrollTo(0, offset - 0) }), 0) } } }) </script><style>.gatsby-image-wrapper{position:relative;overflow:hidden}.gatsby-image-wrapper picture.object-fit-polyfill{position:static!important}.gatsby-image-wrapper img{bottom:0;height:100%;left:0;margin:0;max-width:none;padding:0;position:absolute;right:0;top:0;width:100%;object-fit:cover}.gatsby-image-wrapper [data-main-image]{opacity:0;transform:translateZ(0);transition:opacity .25s linear;will-change:opacity}.gatsby-image-wrapper-constrained{display:inline-block;vertical-align:top}</style><noscript><style>.gatsby-image-wrapper noscript [data-main-image]{opacity:1!important}.gatsby-image-wrapper [data-placeholder-image]{opacity:0!important}</style></noscript><script type="module">const e="undefined"!=typeof HTMLImageElement&&"loading"in HTMLImageElement.prototype;e&&document.body.addEventListener("load",(function(e){const t=e.target;if(void 0===t.dataset.mainImage)return;if(void 0===t.dataset.gatsbyImageSsr)return;let a=null,n=t;for(;null===a&&n;)void 0!==n.parentNode.dataset.gatsbyImageWrapper&&(a=n.parentNode),n=n.parentNode;const o=a.querySelector("[data-placeholder-image]"),r=new Image;r.src=t.currentSrc,r.decode().catch((()=>{})).then((()=>{t.style.opacity=1,o&&(o.style.opacity=0,o.style.transition="opacity 500ms linear")}))}),!0);</script><title data-react-helmet="true">Metrics | Jenkins plugin</title><link data-react-helmet="true" href="https://www.jenkins.io/favicon.ico" rel="shortcut icon" type="image/x-icon"/><link data-react-helmet="true" href="https://www.jenkins.io/apple-touch-icon.png" rel="apple-touch-icon" sizes="180x180"/><link data-react-helmet="true" href="https://www.jenkins.io/favicon-32x32.png" rel="icon" sizes="32x32" type="image/png"/><link data-react-helmet="true" href="https://www.jenkins.io/favicon-16x16.png" rel="icon" sizes="16x16" type="image/png"/><link data-react-helmet="true" href="/site.webmanifest" rel="manifest"/><link data-react-helmet="true" color="#5bbad5" href="https://www.jenkins.io/safari-pinned-tab.svg" rel="mask-icon"/><link data-react-helmet="true" href="https://plugins.jenkins.io/metrics" rel="canonical"/><script data-react-helmet="true" src="https://www.jenkins.io/assets/bower/jquery/jquery.min.js"></script><script data-react-helmet="true" src="https://www.jenkins.io/js/copy-to-clipboard.js"></script><script data-react-helmet="true" src="https://www.jenkins.io/assets/bower/anchor-js/anchor.min.js"></script><script data-react-helmet="true" src="https://www.jenkins.io/assets/bower/@popperjs/core/umd/popper.min.js"></script><script data-react-helmet="true" src="https://www.jenkins.io/assets/bower/bootstrap/js/bootstrap.min.js"></script><script data-react-helmet="true" src="https://cdn.jsdelivr.net/npm/lit@3.2.1/polyfill-support.js"></script><script data-react-helmet="true" src="https://cdn.jsdelivr.net/npm/@webcomponents/webcomponentsjs@2.8.0/webcomponents-loader.js"></script><script data-react-helmet="true" data="ionicons" src="https://cdnjs.cloudflare.com/ajax/libs/ionicons/7.4.0/ionicons/ionicons.esm.js" type="module"></script><script data-react-helmet="true" data="ionicons" src="https://cdnjs.cloudflare.com/ajax/libs/ionicons/7.4.0/ionicons/ionicons.js"></script><script data-react-helmet="true" src="https://cdn.jsdelivr.net/npm/@jenkinsci/jenkins-io-components/+esm" type="module"></script><script data-react-helmet="true" src="https://cdn.jsdelivr.net/npm/@jenkinsci/jenkins-io-components/"></script><style data-react-helmet="true">html { min-height:100%; position: relative; }</style><link rel="sitemap" type="application/xml" href="/sitemap-index.xml"/><link rel="canonical" href="https://plugins.jenkins.io/metrics/" data-baseprotocol="https:" data-basehost="plugins.jenkins.io"/><link rel="preconnect" href="https://jenkins-matomo.do.g4v.dev"/></head><body><div id="___gatsby"><div style="outline:none" tabindex="-1" id="gatsby-focus-wrapper"><div id="pluginPage"><jio-navbar class="fixed-nav" theme="auto" property="https://plugins.jenkins.io/"></jio-navbar><div id="grid-box"><div class="title-wrapper"><h1 class="title">Metrics</h1><button class="app-button">How to install</button></div><div class="row flex pluginContainer flex-column-reverse flex-md-row"><div class="col-md-9 main"><ul class="nav nav-pills"><li class="nav-item"><a aria-current="page" class="nav-link active" href="/metrics/">Documentation</a></li><li class="nav-item"><a class="nav-link" href="/metrics/releases/">Releases</a></li><li class="nav-item"><a class="nav-link" href="/metrics/issues/">Issues</a></li><li class="nav-item"><a class="nav-link" href="/metrics/dependencies/">Dependencies</a></li><li class="nav-item"><a class="nav-link" href="/metrics/healthscore/">Health Score</a></li></ul><div><div class="content"><div><div id="plugin-content-readme" class="adoc" data-path="README.adoc"> <article class="markdown-body entry-content container-lg" itemprop="text"> <div class="markdown-heading" dir="auto"> </div> <div id="plugin-content-user-content-preamble" dir="auto"> <div dir="auto"> <div dir="auto"> <p dir="auto"><span><a href="https://plugins.jenkins.io/metrics" rel="nofollow"><img src="https://camo.githubusercontent.com/02ae9bf71452eed84d0c2a0c7f4db6256c8f77459e69ebdb98561875249d3c37/68747470733a2f2f696d672e736869656c64732e696f2f6a656e6b696e732f706c7567696e2f762f6d6574726963733f6c6162656c3d6c617465737425323072656c65617365" alt="metrics?label=latest%20release" data-canonical-src="https://img.shields.io/jenkins/plugin/v/metrics?label=latest%20release" style="max-width: 100%;"></a></span> <span><a href="https://github.com/jenkinsci/metrics-plugin/releases/latest"><img src="https://camo.githubusercontent.com/cc439b218af5d12eb0fd541811060a70217f4631b6400ab99d252cd6b61a9d60/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652d646174652f6a656e6b696e7363692f6d6574726963732d706c7567696e2e737667" alt="metrics plugin" data-canonical-src="https://img.shields.io/github/release-date/jenkinsci/metrics-plugin.svg" style="max-width: 100%;"></a></span> <span><a href="https://raw.githubusercontent.com/jenkinsci/metrics-plugin/master/LICENSE.md" rel="nofollow"><img src="https://camo.githubusercontent.com/26f287491d6ef52484b18a946c17888cd2aaa8126e07f3ee513c1008fc56f093/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6a656e6b696e7363692f6d6574726963732d706c7567696e" alt="metrics plugin" data-canonical-src="https://img.shields.io/github/license/jenkinsci/metrics-plugin" style="max-width: 100%;"></a></span> <span><a href="https://plugins.jenkins.io/metrics" rel="nofollow"><img src="https://camo.githubusercontent.com/fde0c488b7007d24d36f7fe41ec10f38c9a3d98738212ed2f06a971ad8e4f3a0/68747470733a2f2f696d672e736869656c64732e696f2f6a656e6b696e732f706c7567696e2f692f6d6574726963732e7376673f636f6c6f723d626c7565" alt="metrics" data-canonical-src="https://img.shields.io/jenkins/plugin/i/metrics.svg?color=blue" style="max-width: 100%;"></a></span></p> </div> <div dir="auto"> <p dir="auto">This plugin exposes the <a href="https://metrics.dropwizard.io/" rel="nofollow">Metrics</a> API to Jenkins plugins.</p> </div> </div> </div> <div dir="auto"> <div class="markdown-heading" dir="auto"> <h2 id="plugin-content-configuration" class="heading-element" dir="auto" style="position: relative">Configuration<a href="#plugin-content-configuration" aria-label="configuration permalink" class="anchor after"><ion-icon name="link-outline"></ion-icon></a></h2> </div> <div dir="auto"> <div dir="auto"> <div class="markdown-heading" dir="auto"> <h3 id="plugin-content-standard-health-check" class="heading-element" dir="auto" style="position: relative">Standard health check<a href="#plugin-content-standard-health-check" aria-label="standard health check permalink" class="anchor after"><ion-icon name="link-outline"></ion-icon></a></h3> </div> <div dir="auto"> <p dir="auto">The Dropwizard Metrics API includes a contract for health checks. Health checks return a simple <code>PASS</code>/<code>FAIL</code> status and can include an optional message.</p> </div> <div dir="auto"> <dl> <dt> <code>disk-space</code> </dt> <dd> <p dir="auto">Returns <code>FAIL</code> if any of the Jenkins disk space monitors are reporting the disk space as less than the configured threshold. The message will reference the first node which fails this check. There may be other nodes that fail the check, but this health check is designed to fail fast.</p> </dd> <dt> <code>plugins</code> </dt> <dd> <p dir="auto">Returns <code>FAIL</code> if any of the Jenkins plugins failed to start. A failure is typically indicative of a potential issue within the Jenkins installation that will either be solved by explicitly disabling the failing plugin(s) or by resolving the corresponding plugin dependency issues.</p> </dd> <dt> <code>temporary-space</code> </dt> <dd> <p dir="auto">Returns <code>FAIL</code> if any of the Jenkins temporary space monitors are reporting the temporary space as less than the configured threshold. The message will reference the first node which fails this check. There may be other nodes that fail the check, but this health check is designed to fail fast.</p> </dd> <dt> <code>thread-deadlock</code> </dt> <dd> <p dir="auto">Returns <code>FAIL</code> if there are any deadlocked threads in the Jenkins JVM.</p> </dd> </dl> </div> </div> <div dir="auto"> <div class="markdown-heading" dir="auto"> <h3 id="plugin-content-standard-metrics" class="heading-element" dir="auto" style="position: relative">Standard metrics<a href="#plugin-content-standard-metrics" aria-label="standard metrics permalink" class="anchor after"><ion-icon name="link-outline"></ion-icon></a></h3> </div> <div dir="auto"> <p dir="auto">There are five types of metric defined in the Dropwizard Metrics API:</p> </div> <div dir="auto"> <ul dir="auto"> <li> <p dir="auto">A <strong>gauge</strong> is an instantaneous measurement of a value</p> </li> <li> <p dir="auto">A <strong>counter</strong> is a gauge that tracks the count of something</p> </li> <li> <p dir="auto">A <strong>meter</strong> measures the rate of events over time. </p> </li> <li> <p dir="auto">A <strong>histogram</strong> measures the statistical distribution of values in a stream of data. </p> </li> <li> <p dir="auto">A <strong>timer</strong> is basically a histogram of the duration of events coupled with a meter of the rate of the event occurrence. </p> </li> </ul> </div> <div dir="auto"> <div class="markdown-heading" dir="auto"> <h4 id="plugin-content-system-and-java-virtual-machine-metrics" class="heading-element" dir="auto" style="position: relative">System and Java Virtual Machine metrics<a href="#plugin-content-system-and-java-virtual-machine-metrics" aria-label="system and java virtual machine metrics permalink" class="anchor after"><ion-icon name="link-outline"></ion-icon></a></h4> </div> <div dir="auto"> <dl> <dt> <code>system.cpu.load</code> (gauge) </dt> <dd> <p dir="auto">The system load on the Jenkins controller as reported by the JVM’s Operating System JMX bean. <em>The calculation of system load is operating system dependent.</em> Typically this is the sum of the number of processes that are currently running plus the number that are waiting to run. This is typically comparable against the number of CPU cores.</p> </dd> <dt> <code>vm.blocked.count</code> (gauge) </dt> <dd> <p dir="auto">The number of threads in the Jenkins JVM that are currently blocked waiting for a monitor lock.</p> </dd> <dt> <code>vm.count</code> (gauge) </dt> <dd> <p dir="auto">The total number of threads in the Jenkins JVM. This is the sum of: <code>vm.blocked.count</code>, <code>vm.new.count</code>, <code>vm.runnable.count</code>, <code>vm.terminated.count</code>, <code>vm.timed_waiting.count</code> and <code>vm.waiting.count</code></p> </dd> <dt> <code>vm.cpu.load</code> (gauge) </dt> <dd> <p dir="auto">The rate of CPU time usage by the JVM per unit time on the Jenkins controller. This is equivalent to the number of CPU cores being used by the Jenkins JVM.</p> </dd> <dt> <code>vm.daemon.count</code> (gauge) </dt> <dd> <p dir="auto">The number of threads in the Jenkins JVM that are marked as Daemon threads.</p> </dd> <dt> <code>vm.deadlocks</code> (gauge) </dt> <dd> <p dir="auto">The number of threads that have a currently detected deadlock with at least one other thread.</p> </dd> <dt> <code>vm.file.descriptor.ratio</code> (gauge) </dt> <dd> <p dir="auto">The ratio of used to total file descriptors. (This is a value between <code>0</code> and <code>1</code> inclusive)</p> </dd> <dt> <code>vm.gc.X.count</code> (gauge) </dt> <dd> <p dir="auto">The number of times the <code>X</code> garbage collector has run. The <code>X</code> names are supplied by and dependent on the JVM. There will be one metric for each of the garbage collectors reported by the JVM.</p> </dd> <dt> <code>vm.gc.X.time</code> (gauge) </dt> <dd> <p dir="auto">The amount of time spent in the <code>X</code> garbage collector. The <code>X</code> names are supplied by and dependent on the JVM. There will be one metric for each of the garbage collectors reported by the JVM.</p> </dd> <dt> <code>vm.memory.heap.committed</code> (gauge) </dt> <dd> <p dir="auto">The amount of memory, in the heap that is used for object allocation, that is guaranteed by the operating system as available for use by the Jenkins JVM. (Units of measurement: bytes)</p> </dd> <dt> <code>vm.memory.heap.init</code> (gauge) </dt> <dd> <p dir="auto">The amount of memory, in the heap that is used for object allocation, that the Jenkins JVM initially requested from the operating system. (Units of measurement: bytes)</p> </dd> <dt> <code>vm.memory.heap.max</code> (gauge) </dt> <dd> <p dir="auto">The maximum amount of memory, in the heap that is used for object allocation, that the Jenkins JVM is allowed to request from the operating system. This amount of memory is not guaranteed to be available for memory management if it is greater than the amount of committed memory. The JVM may fail to allocate memory even if the amount of used memory does not exceed this maximum size. (Units of measurement: bytes)</p> </dd> <dt> <code>vm.memory.heap.usage</code> (gauge) </dt> <dd> <p dir="auto">The ratio of <code>vm.memory.heap.used</code> to <code>vm.memory.heap.max</code>. (This is a value between <code>0</code> and <code>1</code> inclusive)</p> </dd> <dt> <code>vm.memory.heap.used</code> (gauge) </dt> <dd> <p dir="auto">The amount of memory, in the heap that is used for object allocation, that the Jenkins JVM is currently using.(Units of measurement: bytes)</p> </dd> <dt> <code>vm.memory.non-heap.committed</code> (gauge) </dt> <dd> <p dir="auto">The amount of memory, outside the heap that is used for object allocation, that is guaranteed by the operating system as available for use by the Jenkins JVM. (Units of measurement: bytes)</p> </dd> <dt> <code>vm.memory.non-heap.init</code> (gauge) </dt> <dd> <p dir="auto">The amount of memory, outside the heap that is used for object allocation, that the Jenkins JVM initially requested from the operating system. (Units of measurement: bytes)</p> </dd> <dt> <code>vm.memory.non-heap.max</code> (gauge) </dt> <dd> <p dir="auto">The maximum amount of memory, outside the heap that is used for object allocation, that the Jenkins JVM is allowed to request from the operating system. This amount of memory is not guaranteed to be available for memory management if it is greater than the amount of committed memory. The JVM may fail to allocate memory even if the amount of used memory does not exceed this maximum size. (Units of measurement: bytes)</p> </dd> <dt> <code>vm.memory.non-heap.usage</code> (gauge) </dt> <dd> <p dir="auto">The ratio of <code>vm.memory.non-heap.used</code> to <code>vm.memory.non-heap.max</code>. (This is a value between <code>0</code> and <code>1</code> inclusive)</p> </dd> <dt> <code>vm.memory.non-heap.used</code> (gauge) </dt> <dd> <p dir="auto">The amount of memory, outside the heap that is used for object allocation, that the Jenkins JVM is currently using. (Units of measurement: bytes)</p> </dd> <dt> <code>vm.memory.pools..usage</code> (gauge) </dt> <dd> <p dir="auto">The usage level of the <code> memory pool, where a value of <code>0</code> represents an unused pool while a value of <code>1</code> represents a pool that is at capacity. The </code> names are supplied by and dependent on the JVM. There will be one metric for each of the memory pools reported by the JVM.</p> </dd> <dt> <code>vm.memory.total.committed</code> (gauge) </dt> <dd> <p dir="auto">The total amount of memory that is guaranteed by the operating system as available for use by the Jenkins JVM. (Units of measurement: bytes)</p> </dd> <dt> <code>vm.memory.total.init</code> (gauge) </dt> <dd> <p dir="auto">The total amount of memory that the Jenkins JVM initially requested from the operating system. (Units of measurement: bytes)</p> </dd> <dt> <code>vm.memory.total.max</code> (gauge) </dt> <dd> <p dir="auto">The maximum amount of memory that the Jenkins JVM is allowed to request from the operating system. This amount of memory is not guaranteed to be available for memory management if it is greater than the amount of committed memory. The JVM may fail to allocate memory even if the amount of used memory does not exceed this maximum size. (Units of measurement: bytes)</p> </dd> <dt> <code>vm.memory.total.used</code> (gauge) </dt> <dd> <p dir="auto">The total amount of memory that the Jenkins JVM is currently using.(Units of measurement: bytes)</p> </dd> <dt> <code>vm.new.count</code> (gauge) </dt> <dd> <p dir="auto">The number of threads in the Jenkins JVM that have not currently started execution.</p> </dd> <dt> <code>vm.runnable.count</code> (gauge) </dt> <dd> <p dir="auto">The number of threads in the Jenkins JVM that are currently executing in the JVM. Some of these threads may be waiting for other resources from the operating system such as the processor.</p> </dd> <dt> <code>vm.terminated.count</code> (gauge) </dt> <dd> <p dir="auto">The number of threads in the Jenkins JVM that have completed execution.</p> </dd> <dt> <code>vm.timed_waiting.count</code> (gauge) </dt> <dd> <p dir="auto">The number of threads in the Jenkins JVM that have suspended execution for a defined period of time.</p> </dd> <dt> <code>vm.uptime.milliseconds</code> (gauge) </dt> <dd> <p dir="auto">The number of milliseconds since the Jenkins JVM started</p> </dd> <dt> <code>vm.waiting.count</code> (gauge) </dt> <dd> <p dir="auto">The number of threads in the Jenkins JVM that are currently waiting on another thread to perform a particular action.</p> </dd> </dl> </div> </div> <div dir="auto"> <div class="markdown-heading" dir="auto"> <h4 id="plugin-content-web-ui-metrics" class="heading-element" dir="auto" style="position: relative">Web UI metrics<a href="#plugin-content-web-ui-metrics" aria-label="web ui metrics permalink" class="anchor after"><ion-icon name="link-outline"></ion-icon></a></h4> </div> <div dir="auto"> <dl> <dt> <code>http.activeRequests</code> (counter) </dt> <dd> <p dir="auto">The number of currently active requests against the Jenkins Web UI.</p> </dd> <dt> <code>http.responseCodes.badRequest</code> (meter) </dt> <dd> <p dir="auto">The rate at which the Jenkins Web UI is responding to requests with a <code>HTTP/400</code> status code</p> </dd> <dt> <code>http.responseCodes.created</code> (meter) </dt> <dd> <p dir="auto">The rate at which the Jenkins Web UI is responding to requests with a <code>HTTP/201</code> status code</p> </dd> <dt> <code>http.responseCodes.forbidden</code> (meter) </dt> <dd> <p dir="auto">The rate at which the Jenkins Web UI is responding to requests with a <code>HTTP/403</code> status code</p> </dd> <dt> <code>http.responseCodes.noContent</code> (meter) </dt> <dd> <p dir="auto">The rate at which the Jenkins Web UI is responding to requests with a <code>HTTP/204</code> status code</p> </dd> <dt> <code>http.responseCodes.notFound</code> (meter) </dt> <dd> <p dir="auto">The rate at which the Jenkins Web UI is responding to requests with a <code>HTTP/404</code> status code</p> </dd> <dt> <code>http.responseCodes.notModified</code> (meter) </dt> <dd> <p dir="auto">The rate at which the Jenkins Web UI is responding to requests with a <code>HTTP/304</code> status code</p> </dd> <dt> <code>http.responseCodes.ok</code> (meter) </dt> <dd> <p dir="auto">The rate at which the Jenkins Web UI is responding to requests with a <code>HTTP/200</code> status code</p> </dd> <dt> <code>http.responseCodes.other</code> (meter) </dt> <dd> <p dir="auto">The rate at which the Jenkins Web UI is responding to requests with a non-informational status code that is not in the list: <code>HTTP/200</code>, <code>HTTP/201</code>, <code>HTTP/204</code>, <code>HTTP/304</code>, <code>HTTP/400</code>, <code>HTTP/403</code>, <code>HTTP/404</code>, <code>HTTP/500</code>, or <code>HTTP/503</code></p> </dd> <dt> <code>http.responseCodes.serverError</code> (meter) </dt> <dd> <p dir="auto">The rate at which the Jenkins Web UI is responding to requests with a <code>HTTP/500</code> status code</p> </dd> <dt> <code>http.responseCodes.serviceUnavailable</code> (meter) </dt> <dd> <p dir="auto">The rate at which the Jenkins Web UI is responding to requests with a <code>HTTP/503</code> status code</p> </dd> <dt> <code>http.requests</code> (timer) </dt> <dd> <p dir="auto">The rate at which the Jenkins Web UI is receiving requests and the time spent generating the corresponding responses.</p> </dd> </dl> </div> </div> <div dir="auto"> <div class="markdown-heading" dir="auto"> <h4 id="plugin-content-jenkins-specific-metrics" class="heading-element" dir="auto" style="position: relative">Jenkins specific metrics<a href="#plugin-content-jenkins-specific-metrics" aria-label="jenkins specific metrics permalink" class="anchor after"><ion-icon name="link-outline"></ion-icon></a></h4> </div> <div dir="auto"> <dl> <dt> <code>jenkins.executor.count.value</code> (gauge) </dt> <dd> <p dir="auto">The number of executors available to Jenkins. This is corresponds to the sum of all the executors of all the on-line nodes.</p> </dd> <dt> <code>jenkins.executor.count.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.executor.count.value</code>.</p> </dd> <dt> <code>jenkins.executor.free.value</code> (gauge) </dt> <dd> <p dir="auto">The number of executors available to Jenkins that are not currently in use.</p> </dd> <dt> <code>jenkins.executor.free.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.executor.free.value</code>.</p> </dd> <dt> <code>jenkins.executor.in-use.value</code> (gauge) </dt> <dd> <p dir="auto">The number of executors available to Jenkins that are currently in use.</p> </dd> <dt> <code>jenkins.executor.in-use.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.executor.in-use.value</code>.</p> </dd> <dt> <code>jenkins.health-check.count</code> (gauge) </dt> <dd> <p dir="auto">The number of health checks associated with the HealthCheckRegistry defined within the Metrics Plugin</p> </dd> <dt> <code>jenkins.health-check.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which the health checks are being run and the duration of each health check run. The Metrics Plugin, by default, will run the health checks once per minute. The frequency can be controlled by the <code>jenkins.metrics.api.Metrics.HEALTH_CHECK_INTERVAL_MINS</code> system property. In addition, the Metrics Plugin’s Operational Servlet can be used to request the health checks be run on demand.</p> </dd> <dt> <code>jenkins.health-check.inverse-score</code> (gauge) </dt> <dd> <p dir="auto">The ratio of health checks reporting failure to the total number of health checks. Larger values indicate decreasing health as measured by the health checks. (This is a value between <code>0</code> and <code>1</code> inclusive)</p> </dd> <dt> <code>jenkins.health-check.score</code> (gauge) </dt> <dd> <p dir="auto">The ratio of health checks reporting success to the total number of health checks. Larger values indicate increasing health as measured by the health checks. (This is a value between <code>0</code> and <code>1</code> inclusive)</p> </dd> <dt> <code>jenkins.job.blocked.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which jobs in the build queue enter the blocked state and the amount of time they spend in that state.</p> </dd> <dt> <code>jenkins.job.buildable.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which jobs in the build queue enter the buildable state and the amount of time they spend in that state.</p> </dd> <dt> <code>jenkins.job.building.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which jobs are built and the time they spend building.</p> </dd> <dt> <code>jenkins.job.queuing.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which jobs are queued and the total time they spend in the build queue.</p> </dd> <dt> <code>jenkins.job.execution.time</code> (timer) </dt> <dd> <p dir="auto">The rate at which jobs in the build queue enter the execution state and the amount of time they spend in that state.</p> </dd> <dt> <code>jenkins.job.total.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which jobs are queued and the total time they spend from entering the build queue to completing building</p> </dd> <dt> <code>jenkins.job.waiting.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which jobs enter the quiet period and the total amount of time that jobs spend in their quiet period.</p> </dd> <dt> <code>jenkins.task.scheduled</code> (meter) </dt> <dd> <p dir="auto">Similar to jenkins.job.scheduled but for task.</p> </dd> <dt> <code>jenkins.task.queuing.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which tasks are queued and the total time they spend in the build queue.</p> </dd> <dt> <code>jenkins.task.waiting.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which tasks enter the quiet period and the total amount of time that jobs spend in their quiet period.</p> </dd> <dt> <code>jenkins.task.blocked.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which tasks in the build queue enter the blocked state and the amount of time they spend in that state.</p> </dd> <dt> <code>jenkins.task.buildable.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which tasks in the build queue enter the buildable state and the amount of time they spend in that state.</p> </dd> <dt> <code>jenkins.task.execution.duration</code> (timer) </dt> <dd> <p dir="auto">The rate at which tasks in the build queue enter the execution state and the amount of time they spend in that state.</p> </dd> </dl> </div> <div dir="auto"> <p dir="auto">Jenkins allows configuring a quiet period for most job types. While in the quiet period multiple identical requests for building the job will be coalesced. Traditionally this was used with source control systems that do not provide an atomic commit facility - such as CVS - in order to ensure that all the files in a large commit were picked up as a single build. With more modern source control systems the quiet period can still be useful, for example to ensure that push notification of the same commit via redundant parallel notification paths get coalesced.</p> </div> <div dir="auto"> <dl> <dt> <code>jenkins.job.count.value</code> (gauge) </dt> <dd> <p dir="auto">The number of jobs in Jenkins</p> </dd> <dt> <code>jenkins.job.count.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.job.count.value</code>.</p> </dd> <dt> <code>jenkins.job.scheduled</code> (meter) </dt> <dd> <p dir="auto">The rate at which jobs are scheduled. If a job is already in the queue and an identical request for scheduling the job is received then Jenkins will coalesce the two requests. This metric gives a reasonably pure measure of the load requirements of the Jenkins controller as it is unaffected by the number of executors available to the system. Multiplying this metric by <code>jenkins.job.building.duration</code> gives an approximate measure of the number of executors required in order to ensure that every build request results in a build. A more accurate measure can be obtained from a job-by-job summation of the scheduling rate for that job and the average build duration of that job.The most accurate measure would require maintaining separate sums partitioned by the labels that each job can run against in order to determine the number of each type of executor required. Such calculations assume that: every build node is equivalent and/or the build times are comparable across all build nodes; and build times are unaffected by other jobs running in parallel on other executors on the same node. However in most cases even the basic result from multiplying <code>jenkins.job.scheduled</code> by <code>jenkins.job.building.duration</code> gives a reasonable result. Where larger than <code>jenkins.executor.count.value</code> by more than 10-15% the Jenkins build queue is typically observed to grow rapidly until most jobs have at least one build request sitting in the build queue. Whereas when less than <code>jenkins.executor.count.value</code> by at least 20-25% the build queue will tend to remain small, except for those cases where there are a large number of build jobs fighting for a small number of executors on nodes with specific labels.</p> </dd> <dt> <code>jenkins.node.count.value</code> (gauge) </dt> <dd> <p dir="auto">The number of build nodes available to Jenkins, both on-line and off-line.</p> </dd> <dt> <code>jenkins.node.count.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.node.count.value</code>.</p> </dd> <dt> <code>jenkins.node._XXX.builds</code> _(timer) </dt> <dd> <p dir="auto">The rate of builds starting on the <code><em>XXX</em></code> node and the amount of time they spend building. There will be one metric for each <code><em>XXX</em></code> named node. The metric is lazily created after the JVM starts up when the first build starts on that node.</p> </dd> <dt> <code>jenkins.node.offline.value</code> (gauge) </dt> <dd> <p dir="auto">The number of build nodes available to Jenkins but currently off-line.</p> </dd> <dt> <code>jenkins.node.offline.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.node.offline.value</code>.</p> </dd> <dt> <code>jenkins.node.online.value</code> (gauge) </dt> <dd> <p dir="auto">The number of build nodes available to Jenkins and currently on-line.</p> </dd> <dt> <code>jenkins.node.online.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.node.online.value</code>.</p> </dd> <dt> <code>jenkins.plugins.active</code> (gauge) </dt> <dd> <p dir="auto">The number of plugins in the Jenkins instance that started successfully.</p> </dd> <dt> <code>jenkins.plugins.failed</code> (gauge) </dt> <dd> <p dir="auto">The number of plugins in the Jenkins instance that failed to start. A value other than <code>0</code> is typically indicative of a potential issue within the Jenkins installation that will either be solved by explicitly disabling the plugin(s) or by resolving the plugin dependency issues.</p> </dd> <dt> <code>jenkins.plugins.inactive</code> (gauge) </dt> <dd> <p dir="auto">The number of plugins in the Jenkins instance that are not currently enabled.</p> </dd> <dt> <code>jenkins.plugins.withUpdate</code> (gauge) </dt> <dd> <p dir="auto">The number of plugins in the Jenkins instance that have an newer version reported as available in the current Jenkins update center metadata held by Jenkins. This value is not indicative of an issue with Jenkins but high values can be used as a trigger to review the plugins with updates with a view to seeing whether those updates potentially contain fixes for issues that could be affecting your Jenkins instance.</p> </dd> <dt> <code>jenkins.queue.blocked.value</code> (gauge) </dt> <dd> <p dir="auto">The number of jobs that are in the Jenkins build queue and currently in the blocked state.</p> </dd> <dt> <code>jenkins.queue.blocked.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.queue.blocked.value</code>.</p> </dd> <dt> <code>jenkins.queue.buildable.value</code> (gauge) </dt> <dd> <p dir="auto">The number of jobs that are in the Jenkins build queue and currently in the buildable state.</p> </dd> <dt> <code>jenkins.queue.buildable.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.queue.buildable.value</code>.</p> </dd> <dt> <code>jenkins.queue.pending.value</code> (gauge) </dt> <dd> <p dir="auto">The number of jobs that are in the Jenkins build queue and currently in the pending state.</p> </dd> <dt> <code>jenkins.queue.pending.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.queue.pending.value</code>.</p> </dd> <dt> <code>jenkins.queue.size.value</code> (gauge) </dt> <dd> <p dir="auto">The number of jobs that are in the Jenkins build queue.</p> </dd> <dt> <code>jenkins.queue.size.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.queue.size.value</code>.</p> </dd> <dt> <code>jenkins.queue.stuck.value</code> (gauge) </dt> <dd> <p dir="auto">The number of jobs that are in the Jenkins build queue and currently in the stuck state.</p> </dd> <dt> <code>jenkins.queue.stuck.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.queue.stuck.value</code>.</p> </dd> <dt> <code>jenkins.project.count.value</code> (gauge) </dt> <dd> <p dir="auto">The number of projects.</p> </dd> <dt> <code>jenkins.project.count.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.project.count.value</code>.</p> </dd> <dt> <code>jenkins.project.enabled.count.value</code> (gauge) </dt> <dd> <p dir="auto">The number of projects enabled.</p> </dd> <dt> <code>jenkins.project.enabled.count.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.project.enabled.count.value</code>.</p> </dd> <dt> <code>jenkins.project.disabled.count.value</code> (gauge) </dt> <dd> <p dir="auto">The number of projects disabled.</p> </dd> <dt> <code>jenkins.project.disabled.count.history</code> (histogram) </dt> <dd> <p dir="auto">The historical statistics of <code>jenkins.project.disabled.count.value</code>.</p> </dd> </dl> </div> </div> </div> <div dir="auto"> <div class="markdown-heading" dir="auto"> <h3 id="plugin-content-dropwizard-operational-menu-servlet" class="heading-element" dir="auto" style="position: relative">Dropwizard Operational Menu Servlet<a href="#plugin-content-dropwizard-operational-menu-servlet" aria-label="dropwizard operational menu servlet permalink" class="anchor after"><ion-icon name="link-outline"></ion-icon></a></h3> </div> <div dir="auto"> <p dir="auto">There is a very basic set of standard servlets provided by Dropwizard in conjunction with an Operational menu.</p> </div> <div dir="auto"> <div dir="auto"> <a target="_blank" rel="noopener noreferrer" href="https://github.com/jenkinsci/metrics-plugin/blob/master/./docs/operational-menu-config.png"><img src="https://cdn.jsdelivr.net/gh/jenkinsci/metrics-plugin@master/docs/operational-menu-config.png" alt="operational menu config" style="max-width: 100%;"></a> </div> </div> <div dir="auto"> <p dir="auto">The Metrics servlet returns the Metrics in JSON format (There is also support for JSONP format by requesting <code>Content-Type: text/javascript</code>).</p> </div> <div dir="auto"> <p dir="auto">The Ping servlet returns the text "pong" and a <code>HTTP/200</code> status code.</p> </div> <div dir="auto"> <p dir="auto">The Threads servlet returns a thread dump from the controller only.</p> </div> <div dir="auto"> <p dir="auto">The Healthcheck servlet runs the healthchecks defined against the Metrics API and returns the detailed status in <code>JSON</code> (or <code>JSONP</code>) format, while the high level status is reported by the HTTP status code.</p> </div> <div dir="auto"> <p dir="auto">These servlets are protected by security controls in order to ensure that they are not abused.</p> </div> </div> <div dir="auto"> <div class="markdown-heading" dir="auto"> <h3 id="plugin-content-user-access" class="heading-element" dir="auto" style="position: relative">User access<a href="#plugin-content-user-access" aria-label="user access permalink" class="anchor after"><ion-icon name="link-outline"></ion-icon></a></h3> </div> <div dir="auto"> <p dir="auto">Authenticated users can access the Dropwizard Metrics Servlet at <code>$JENKINS_URL/metrics/currentUser/`</code> if they have the Metrics/View permission.</p> </div> <div dir="auto"> <p dir="auto">Access to the Thread Dumps and Health Checks are given a finer-grained control using the Metrics/ThreadDump and Metrics/HealthCheck permissions respectively.</p> </div> <div dir="auto"> <div dir="auto"> <a target="_blank" rel="noopener noreferrer" href="https://github.com/jenkinsci/metrics-plugin/blob/master/./docs/user-access-config.png"><img src="https://cdn.jsdelivr.net/gh/jenkinsci/metrics-plugin@master/docs/user-access-config.png" alt="user access config" style="max-width: 100%;"></a> </div> </div> <div dir="auto"> <p dir="auto">This is because thread dumps and health checks may expose information about job names or build nodes which may be against organization security policies.</p> </div> </div> <div dir="auto"> <div class="markdown-heading" dir="auto"> <h3 id="plugin-content-machine-access" class="heading-element" dir="auto" style="position: relative">Machine access<a href="#plugin-content-machine-access" aria-label="machine access permalink" class="anchor after"><ion-icon name="link-outline"></ion-icon></a></h3> </div> <div dir="auto"> <p dir="auto">Access to the Metrics Servlet can also be provided by issuing API keys. API keys can be configured from the Jenkins global configuration screen (<code>$JENKINS_URL/configure</code>) under the “Metrics” section. Multiple access can be generated and permissions associated with those keys can also be restricted at this level.</p> </div> <div dir="auto"> <p dir="auto">Alternatively, Metrics can be restricted to users with a specified access key to the metrics. This configuration can be set up using the Jenkins global configuration screen (<code>$JENKINS_URL/configure</code>) under the “Metrics” section. Multiple access can be generated, and access keys’ permissions can be restricted at this level.</p> </div> <div dir="auto"> <div dir="auto"> <a target="_blank" rel="noopener noreferrer" href="https://github.com/jenkinsci/metrics-plugin/blob/master/./docs/machine-access-config.png"><img src="https://cdn.jsdelivr.net/gh/jenkinsci/metrics-plugin@master/docs/machine-access-config.png" alt="machine access config" style="max-width: 100%;"></a> </div> </div> <div dir="auto"> <p dir="auto">Each API key can be configured with unique permissions for the four servlets that the Dropwizard Metrics Servlet offers and each API key can be configured with its own CORS supported origins.</p> </div> <div dir="auto"> <ul dir="auto"> <li> <p dir="auto"><code>HTTP GET</code> requests are using the base URL <code>$JENKINS_URL/metrics/$KEY/</code></p> </li> <li> <p dir="auto"><code>HTTP POST</code> requests are using the base URL <code>$JENKINS_URL/metrics/</code> with the key provided by a standard URL encoded form parameter called key</p> </li> </ul> </div> </div> </div> </div> </article> </div></div></div></div></div><div class="col-md-3 sidebar"><h5>Version: 4.2.21-464.vc9fa_a_0d6265d</h5><div>Released: <time dateTime="2025-02-25T15:13:02.000Z" title="2025-02-25 15:13">6 days ago</time></div><div>Requires Jenkins <!-- -->2.479.1</div><div>ID: <!-- -->metrics</div><div class="sidebarSection"><h5 title="Total: 113,248">Installed on 40.8% of controllers</h5><div class="chart"><div style="padding:0"><canvas role="img" height="90" width="300"></canvas></div></div><div class="label-link"><a href="https://old.stats.jenkins.io/pluginversions/metrics.html">View detailed version information</a></div></div><div class="sidebarSection"><h5>Links</h5><div class="label-link"><a href="https://github.com/jenkinsci/metrics-plugin">GitHub</a></div><div class="label-link"><a href="https://issues.jenkins.io/issues/?jql=resolution%20is%20EMPTY%20and%20component%3D18751">Open issues (Jira)</a></div><div class="label-link"><a href="https://www.jenkins.io/participate/report-issue/redirect/#18751/metrics">Report an issue (Jira)</a></div><div class="label-link"><a href="https://www.jenkins.io/doc/developer/extensions/metrics">Extension Points</a></div><div class="label-link"><a href="https://javadoc.jenkins.io/plugin/metrics">Javadoc</a></div></div><div class="sidebarSection"><h5>Labels</h5><div class="empty">This plugin has no labels</div></div><div class="sidebarSection"><h5>Maintainers</h5><div class="maintainer"><a href="/ui/search/?query=kohsuke">Kohsuke Kawaguchi</a></div><div class="maintainer"><a href="/ui/search/?query=sbadger">Stephen Badger</a></div><div class="maintainer"><a href="/ui/search/?query=alecharp">Adrien Lecharpentier</a></div><div class="maintainer"><a href="/ui/search/?query=amuniz">Antonio Muñiz</a></div><div class="maintainer"><a href="/ui/search/?query=aneveux">Antoine Neveux</a></div><div class="maintainer"><a href="/ui/search/?query=batmat">Baptiste Mathus</a></div><div class="maintainer"><a href="/ui/search/?query=carroll">Carroll Chiou</a></div><div class="maintainer"><a href="/ui/search/?query=jpochat">Jérôme Pochat</a></div><div class="maintainer"><a href="/ui/search/?query=mikecirioli">mike cirioli</a></div><div class="maintainer"><a href="/ui/search/?query=olamy">Olivier Lamy</a></div><div class="maintainer"><a href="/ui/search/?query=rarabaolaza">Raul Arabaolaza</a></div><div class="maintainer"><a href="/ui/search/?query=rsandell">rsandell</a></div><div class="maintainer"><a href="/ui/search/?query=teilo">James Nord</a></div><div class="maintainer"><a href="/ui/search/?query=twasyl">Thierry Wasylczenko</a></div><div class="maintainer"><a href="/ui/search/?query=vlatombe">Vincent Latombe</a></div><div class="maintainer"><a href="/ui/search/?query=fcojfernandez">Francisco Fernández</a></div><div class="maintainer"><a href="/ui/search/?query=pbuenoyerbes">Pedro Bueno</a></div></div><div class="sidebarSection"><h5>Help us improve this page!</h5>To propose a change submit a pull request to <a href="https://github.com/jenkinsci/metrics-plugin" rel="noopener noreferrer" target="_blank">the plugin page</a> on GitHub.</div><div class="sidebarSection"><div><h5>Previous Security Warnings</h5><ul class="security-warning-list"><li><h6><a href="https://www.jenkins.io/security/advisory/2022-01-12/#SECURITY-1624">Access key stored in plain text</a></h6><ul><li>Affects version 4.0.2.8 and earlier</li></ul></li></ul></div></div></div></div></div><jio-footer githubRepo="" property="https://plugins.jenkins.io/" githubBranch="main" reportAProblemTemplate="4-bug.yml"></jio-footer></div></div><div id="gatsby-announcer" style="position:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0" aria-live="assertive" aria-atomic="true"></div></div><script> window.dev = undefined if (window.dev === true || true) { window._paq = window._paq || []; window._paq.push(['setTrackerUrl', 'https://jenkins-matomo.do.g4v.dev/matomo.php']); window._paq.push(['setSiteId', '1']); window._paq.push(['enableHeartBeatTimer']); window.start = new Date(); (function() { var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.defer=true; g.src='https://jenkins-matomo.do.g4v.dev/matomo.js'; s.parentNode.insertBefore(g,s); })(); if (window.dev === true) { console.debug('[Matomo] Tracking initialized') console.debug('[Matomo] matomoUrl: https://jenkins-matomo.do.g4v.dev, siteId: 1') } } </script><noscript><img src="https://jenkins-matomo.do.g4v.dev/piwik.php?idsite=1&rec=1&url=https://plugins.jenkins.io//metrics/" style="border:0" alt="tracker" /></noscript><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/metrics/";/*]]>*/</script><!-- slice-start id="_gatsby-scripts-1" --> <script id="gatsby-chunk-mapping" > window.___chunkMapping="{\"app\":[\"/app-b4fdd418d433e7615df4.js\"],\"component---src-pages-404-jsx\":[\"/component---src-pages-404-jsx-7e80fca415f6414faf44.js\"],\"component---src-templates-index-jsx\":[\"/component---src-templates-index-jsx-a306f41a55d1dd1ef576.js\"],\"component---src-templates-plugin-dependencies-jsx\":[\"/component---src-templates-plugin-dependencies-jsx-abac5dd31b94bc28ec58.js\"],\"component---src-templates-plugin-documentation-jsx\":[\"/component---src-templates-plugin-documentation-jsx-6781e0b1ce28c75ec828.js\"],\"component---src-templates-plugin-health-score-jsx\":[\"/component---src-templates-plugin-health-score-jsx-e305d9d25bab38ec80fd.js\"],\"component---src-templates-plugin-issues-jsx\":[\"/component---src-templates-plugin-issues-jsx-122938860f561ab2c9a9.js\"],\"component---src-templates-plugin-releases-jsx\":[\"/component---src-templates-plugin-releases-jsx-5fadd9f681f2670d8c08.js\"],\"component---src-templates-search-jsx\":[\"/component---src-templates-search-jsx-66441f05e1eae7a0a926.js\"],\"component---src-templates-tombstone-jsx\":[\"/component---src-templates-tombstone-jsx-da05f23b6dacb1c3b636.js\"]}"; </script> <script>window.___webpackCompilationHash="301c310574991dbaca3f";</script><script src="/webpack-runtime-44e7632edd83b56795f4.js" async></script><script src="/framework-e547aabdcd858de1462d.js" async></script><script src="/app-b4fdd418d433e7615df4.js" async></script><!-- slice-end id="_gatsby-scripts-1" --></body></html>